Java多线程总结详解

 

多线程作为Java中很重要的一个基础知识点,我们先来看看一张经典的生命周期图。

Java多线程总结详解

 

上图包含了整个线程的生命周期,上图知识你都懂,那你已经懂了,配合下面知识点在看上图!

 

Java线程具有五中基本状态

新生状态(new)、就绪状态(Runnable)、运行状态(Running)、阻塞状态(Blocked)、死亡状态(Dead)。

新生状态:比如Thread t = new MyThread();

就绪状态:当调用线程对象的start();方法t.start();,线程即进入就绪状态。只是说他们已经再等待CPU执行,但是没有说这个线程会立马执行。

运行状态:当CPU开始调度处于就绪状态的线程时,此时线程才得以真正执行,即进入到运行状态。注释:就绪后状态是运行状态的唯一进口处,线程必须是就绪状态后才可以被运行。

阻塞状态:暂时放弃对CPU的使用权,停止执行,此时进入阻塞状态。到就绪状态后才会,排队继续运行。

1.等待阻塞:运行状态中的线程执行wait()方法,使本线程进入到等待阻塞状态;

2.同步阻塞 -- 线程在获取synchronized同步锁失败,它会进入同步阻塞状态(线程占用同步锁);

3.其他阻塞 -- 通过调用线程的sleep()或join()或发出了I/O请求时,线程会进入到阻塞状态。

死亡状态:线程执行结束或异常退出了run()方法,该线程结束生命周期。

 

 

多线程:指的是这个程序(一个进程)运行时产生了不止一个线程。

并行与并发:

  • 并行:多个cpu实例或者多台机器同时执行一段处理逻辑,是真正的同时。
  • 并发:通过cpu调度算法,让用户看上去同时执行,实际上从cpu操作层面不是真正的同时。并发往往在场景中有公用的资源,那么针对这个公用的资源往往产生瓶颈,我们会用TPS或者QPS来反应这个系统的处理能力

 

如下图展示:一个咖啡店和二个咖啡店排队

Java多线程总结详解

 

并发与并行
  • 线程安全:指在并发的情况之下,代码经过多线程使用,线程的调度顺序不影响任何结果。这个时候使用多线程,我们只需要关注系统的内存,cpu是不是够用即可。
  • 同步:Java中的同步指的是通过人为的控制和调度,保证共享资源的多线程访问成为线程安全,来保证结果的准确。在保证结果准确的同时,提高性能,线程安全的优先级高于性能。

 

后面下一页开始继续说明

腾讯云服务器安全可靠高性能,多种配置供您选择
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: