JAVA中实现多线程

一,JAVA中实现多线程(一)

1,在Java中负责线程的这个功能的是Java.lang.Thread 这个类
2,可以通过创建 Thread 的实例来创建新的线程。

3,每个线程都是通过某个特定Thread对象所对应的方法run( )来完成其操作的,方法run( )称为线程体。

4,通过调用Thead类的start()方法来启动一个线程。

二,创建线程的方式一继承Thread类

操作步骤: 【1】继承Thread类

【2】重写run方法
【3】创建对象,调用start()方法启动线程

JAVA中实现多线程_第1张图片

三,线程的执行

JAVA中实现多线程_第2张图片

四,创建线程的方式二实现Runnable接口

操作步骤:【1】实现Runnable接口
【2】重写run方法
【3】创建对象,调用start()方法启动线程

JAVA中实现多线程_第3张图片

 五,JAVA中实现多线程(二)

1,继承Thread类方式的缺点:那就是如果我们的类已经从一个类继承(如小程序必须继承自 Applet 类),则无法再继承 Thread类

2,通过Runnable接口实现多线程
3,优点:可以同时实现继承。实现Runnable接口方式要通用一些。

4,(1)避免单继承
5,(2)方便共享资源 同一份资源 多个代理访问

六,线程状态

JAVA中实现多线程_第4张图片

 1,新生状态

– 用new关键字建立一个线程后,该线程对象就处于新生状态。

– 处于新生状态的线程有自己的内存空间,通过调用start()方法进入就绪状态。

2,就绪状态

– 处于就绪状态线程具备了运行条件,但还没分配到CPU,处于线程就绪队列,等待系统为其分
配CPU。

– 当系统选定一个等待执行的线程后,它就会从就绪状态进入执行状态,该动作称为 CPU “ 调 度”。

3,运行状态

– 在运行状态的线程执行自己的run方法中代码,直到等待某资源而阻塞戒完成任何而死亡。

– 如果在给定的时间片内没有执行结束,就会被系统给换下来回到等待执行状态。

4,阻塞状态

– 处于运行状态的线程在某些情况下,如执行了sleep(睡眠)方法,戒等待I/O设备等资源,将让
出CPU并暂时停止自己运行,进入阻塞状态。

– 在阻塞状态的线程不能进入就绪队列。只有当引起阻塞的原因消除时,如睡眠时间已到,戒等
待的I/O设备空闲下来,线程便转入就绪状态,重新到就绪队列中排队等待,被系统选中后从
原来停止的位置开始继续执行。

5,死亡状态

– 死亡状态是线程生命周期中的最后一个阶段。线程死亡的原因有三个,

一个是正常运行的线程完成了它的全部工作;

另一个是线程被强制性地终止,如通过stop方法来终止一个线程【不推荐使用】;

三是线程抛出未捕获的异常。

七,线程操作的相关方法

JAVA中实现多线程_第5张图片

 八,阻塞状态(sleep/yield/join方法)

1,有三种方法可以暂停Thread执行:

(1),sleep:
不会释放锁,Sleep时别的线程也不可以访问锁定对象。

(2),yield:
让出CPU的使用权,从运行态直接迚入就绪态。让CPU重新挑选哪一个线程进入运行状态。
(3),join:
当某个线程等待另一个线程执行结束后,才继续执行时,使调用该方法的线程在此之前执行完毕,也就是等待调用该方法的线程执行完毕后再往下继续执行

你可能感兴趣的:(语言运用,java,java,开发语言)