线程-初步

一、java中线程的两种方式:

  1.通过实现Runnable()接口;

  2.通过继承Thread类来实现;

下面我们分别来实现这两种方式:

1.实现Runnable()接口

 1 public class thd
 2 {
 3     public static void main(String args[])
 4     {
 5         runner1 r1= new runner1();
 6         Thread td1 = new Thread(r1);
         td1.start();
11
12         for(int i=0;i<10;i++)
13         {
14             System.out.println("Main() :"+i);
15         }
16     }
17 }
18
19 class runner1 implements Runnable
20 {
21     public void run()
22     {
23         for(int i=0;i<10;i++)
24         {
25             System.out.println("Runner1 :"+i);
26         }
27     }
28 }
29
30 

 这种方法使用较为普遍和广泛,因为从Thread类继承以后就不能从其他的类继承,而实现Runnable()接口的方式可以从其他类继承并且还可以实现其他接口.

 接口的实现run()方法是线程体,需要将该类的对象传到Thread类对象当中;

2.通过Thread类继承的方式:

 1 public class thd
 2 {
 3     public static void main(String args[])
 4     {
 5         runner1 r1= new runner1();
 6         r1.start();
 7
 8         for(int i=0;i<10;i++)
 9         {
10             System.out.println("Main() :"+i);
11         }
12     }
13 }
14
15 class runner1 extends Thread
16 {
17     public void run()
18     {
19         for(int i=0;i<10;i++)
20         {
21             System.out.println("Runner1 :"+i);
22         }
23     }
24 }

能用Runnable()接口的方式就不要用这种方式。

二.线程中的方法:

1.join()将线程合并为一个线程,也就是和单线程调用函数结果一样

 1 import java.util.*;
 2 public class thd
 3 {
 4     public static void main(String args[])
 5     {
 6         runner1 r1= new runner1();
 7         r1.start();
 8         try
 9         {
10             r1.join();
11         }
12         catch(InterruptedException e)
13         {
14             e.printStackTrace();
15         }
16         for(int i=0;i<5;i++)
17         {
18             System.out.println("Main "+i);
19         }
20     }
21 }
22
23 class runner1 extends Thread
24 {
25     public void run()
26     {
27         for(int i=0;i<5;i++)
28         {
29             System.out.println("Runner1 "+i);
30         }
31     }
32 }

执行结果如下:

   Runner1 0
  Runner1 1
  Runner1 2
  Runner1 3
  Runner1 4
  Main 0
  Main 1
  Main 2
  Main 3
  Main 4

线程-初步,布布扣,bubuko.com

时间: 2024-12-09 22:47:02

线程-初步的相关文章

Qt线程初步

默默地EEer,原文地址: http://www.cnblogs.com/hebaichuanyeah/p/5618781.html 在linux环境下写Cpp时,发现线程机制异常蛋疼,要么线程函数不能是类的成员函数,要么必须是类的static成员函数(意味着调用的成员变量也必须是static……). Qt提供一套线程机制,

线程初步

进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是一个线程. 进程:进程是指处于运行过程中的程序,并且具有一定的独立功能.进程是系统进行资源分配和调度的一个单位.当程序进入内存运行时,即为进程. 进程的三个特点: 1:独立性:进程是系统中独立存在的实体,它可以独立拥有资源,每一个进程都有自己独立的地址空间,没有进程本身的运行,用户进程不可以直接访问其他进程的地址空间. 2:动态

线程初步了解 - &lt;第一篇&gt;

操作系统通过线程对程序的执行进行管理,当操作系统运行一个程序的时候,首先,操作系统将为这个准备运行的程序分配一个进程,以管理这个程序所需要的各种资源.在这些资源之中,会包含一个称为主线程的线程数据结构,用来管理这个程序的执行状态. 在Windows操作系统下,线程的的数据结构包含以下内容: 1.线程的核心对象:主要包含线程当前的寄存器状态,当操作系统调度这个线程开始运行的时候,寄存器的状态将被加载到CPU中,重新构建线程的执行环境,当线程被调度出来的时候,最后的寄存器状态被重新保存到这里,已备下

lambda表达式与委托与线程初步谈论-基于刘铁锰视频观后操作

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;//线程 using System.Threading;//引用线程方法 namespace ConsoleApplication2 { class Program { static void Main(string[] args) { //委托详解 //Func返回带

线程操作学习20150905

1. ThreadPool 提供线程池的管理 ThreadPool是静态类,无构造函数,其方法都是静态. a) 主要使用的方法是: QueueUserWorkItem方法 public static bool QueueUserWorkItem(WaitCallback callBack): 将方法排入队列以便执行.此方法在有线程池线程变得可用时执行. public static bool QueueUserWorkItem(WaitCallback callBack,Object state)

201871010101-陈来弟《面向对象程序设计(java)》第十六周学习总结

实验十四  应用程序归档与线程初步 实验时间 2019-12-12 第一部分:基础知识 1. 程序与进程: 进程是指一个具有一定独立功能的程序关于某个数据集合的一次运行活动.电脑中时会有很多单独运行的程序,每个程序有一个独立的进程,而进程之间是相互独立存在的.比如下图中的QQ.酷狗播放器.电脑管家等等. 进程想要执行任务就需要依赖线程.换句话说,就是进程中的最小执行单位就是线程,并且一个进程中至少有一个线程. 进程与程序的区别: 1).  程序是指令的有序集合,是一个静态概念,其本事没有任何运行

各科基础详实

一. Java基础部分 1. JAVA的基本数据类型有哪些 ?  String 是不是基本数据类型 ? 2. 一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 3. Java有没有goto? 7 4. 说说&和&&的区别. 7 5. 在JAVA中如何跳出当前的多重嵌套循环? 7 6. switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 8 7. short s1 = 1; s1 = s1 + 1;有什么

python之路 IO多路复用 线程进程初步了解

一.IO多路复用 1.客户端 #!/usr/bin/env python #-*-coding:utf-8-*- import socket sk=socket.socket() sk.connect(('127.0.0.1',8888,)) data=sk.recv(1024) print(data) while True: inp=input('>>>') sk.sendall(bytes(inp,encoding='utf-8')) print(sk.recv(1024)) sk.

Java中有返回值的线程,(缓存)线程池的初步使用

一 简介 在JDK1.5以前的线程是没有返回值的(Thread,Runnable),Callable这个接口是之后才出现的新特性,用法跟Runnable类似,只是不同的是可以有返回值.因此为了测试Callable这个类以及线程池相关内容,我将上一篇文章中的代码进行了小幅度的修改然后写了一下 二 关于线程池的简单使用步骤 1 定义线程类,(1)extends Thread (2)implements Runnable (3)implements Callable<> 2 建立ExecutorSe