Java 多线程实例讲解(一)多线程实例讲解(一)
本文主要介绍Java 多线程的知识,这里整理了详细的资料及简单示例代码有需要的小伙伴可以参考下
Java多线程(一)多线程(一)
多线程作为Java中很重要的一个知识点,在此还是有必要总结一下的。
一一.线程的生命周期及五种基本状态线程的生命周期及五种基本状态
关于Java中线程的生命周期,首先看一下下面这张较为经典的图:
上图中基本上囊括了Java中多线程各重要知识点。掌握了上图中的各知识点,Java中的多线程也就基本上掌握了。主要包
括:
Java线程具有五中基本状态线程具有五中基本状态
新建状态(新建状态(New):):当线程对象对创建后,即进入了新建状态,如:Thread t = new MyThread();
就绪状态(就绪状态(Runnable):):当调用线程对象的start()方法(t.start();),线程即进入就绪状态。处于就绪状态的线程,只是说明
此线程已经做好了准备,随时等待CPU调度执行,并不是说执行了t.start()此线程立即就会执行;
运行状态(运行状态(Running):):当CPU开始调度处于就绪状态的线程时,此时线程才得以真正执行,即进入到运行状态。注:就
绪状态是进入到运行状态的唯一入口,也就是说,线程要想进入运行状态执行,首先必须处于就绪状态中;
阻塞状态(阻塞状态(Blocked):):处于运行状态中的线程由于某种原因,暂时放弃对CPU的使用权,停止执行,此时进入阻塞状态,直
到其进入到就绪状态,才 有机会再次被CPU调用以进入到运行状态。根据阻塞产生的原因不同,阻塞状态又可以分为三种:
1.等待阻塞:运行状态中的线程执行wait()方法,使本线程进入到等待阻塞状态;
2.同步阻塞 -- 线程在获取synchronized同步锁失败(因为锁被其它线程所占用),它会进入同步阻塞状态;
3.其他阻塞 -- 通过调用线程的sleep()或join()或发出了I/O请求时,线程会进入到阻塞状态。当sleep()状态超时、join()等待线程
终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。
死亡状态(死亡状态(Dead):):线程执行完了或者因异常退出了run()方法,该线程结束生命周期。
二二. Java多线程的创建及启动多线程的创建及启动
Java中线程的创建常见有如三种基本形式
1.继承继承Thread类,重写该类的类,重写该类的run()方法。方法。
class MyThread extends Thread {