2017.09.05(2)多线程

162001_8Tws_3607205.png

在java 中要想实现多线程代码有两种手段,一种是继承 Thread 类,

另一种是实现 Runnable 接口。

Thread 类是在 java.lang 包中定义的,一个类只继承了 Thread 类,此类就称为多线程操作类。

在Thread 子类中,必须明确地覆写 Thread 类中的 run() 方法,此方法为线程的主体。

正确地启动线程,必须调用从 Thread 类中继承而来的 start() 方法。

一个类通过继承 Thread 类来实现,那么只能调用一次 start() 方法,如果多次调用将会抛出。。导演

实现 Runnable 接口

在 Java 中也可能通过实现 Runnable 接口的方式实现多线程,Runnable接口中只定义了一个抽象方法

public void run();

在 Thread 类中,提供了 public Thread(Runnable target)  和 public Thread(Runnable target,String name) 两个构造方法,来接收 Runnable 的子类实例对象

所以: new Thread(Runnable 的子类对象).start();

173534_lwoi_3607205.png

173548_Be37_3607205.png

要想实现多线程,必须在主线程中创建新的线程对象。任何线程一般具有5种状态,即:创建、就绪、运行、阻塞、终止。

173742_R7b4_3607205.png

174401_V5l8_3607205.png

105246_z8LD_3607205.png

在 Thread 类中可以通过 getName() 方法取得线程的名称,还可以通过 setName() 方法设置线程的名称

在线程操作中,可以使用 join() 方法让一个线程强制运行,线程强制运行期间,其他线程无法运行,必须等待此线程完成之后才可以继续执行。

直接使用 Thread.sleep() 方法即可实现休眠。

当一个线程运行时,另外一个线程可以直接通过 interrupt() 方法中断其运行状态。

在 Java 程序中,只要前台有一个线程在运行,则整个 Java 进程都不会消失,所以此时可以设置一个后台线程,这样即使 Java 进程结束了,此后台线程依然会继续执行。要想实现宋的操作,直接使用 setDaemon() 方法即可。

class MyThread implements Runnable{
	public void run(){
		while(true){
			System.out.println(Thread.currentThread().getName() + "在运行");
		}
	}
}
public class Task33{
	public static void main(String args[]){
		MyThread my = new MyThread();
		Thread t1 = new Thread(my,"线程");
		t1.setDaemon(true);
		t1.start();
		System.out.println("主方法结束了吧");
	}
}

161548_yIyF_3607205.png

在线程的操作中,也可以使用 yield() 方法将一个线程的操作暂时让给其他线程执行。

同步代码块与同步方法

同步代码块格式:synchronized(同步对象){ 需要同步的代码;}

同步方法格式:synchronized 方法返回值 方法名称(参数列表){ 方法主体 }

163306_Iy09_3607205.png

170538_WDiz_3607205.png

170626_7mMn_3607205.png

170643_mNLd_3607205.png

 

 

 

转载于:https://my.oschina.net/u/3607205/blog/1529536

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值