04-Java并发编程基础

一、线程简介

1.1 什么是线程

1.2 为什么要使用多线程

(1)更多的处理器核心
(2)更快的响应时间
(3)更好的编程模型

1.3 线程优先级

  在Java线程中,通过一个整型成员变量priority来控制优先级,优先级的范围从1~10,在线程构建的时候可以通过setPriority(int)方法来修改优先级,默认优先级是5优先级高的线程分配时间片的数量要多于优先级低的线程。设置线程优先级时,针对频繁阻塞(休眠或者I/O操作)的线程需要设置较高优先级,而偏重计算(需要较多CPU时间或者偏运算)的线程则设置较低的优先级,确保处理器不会被独占。在不同的JVM以及操作系统上,线程规划会存在差异,有些操作系统甚至会忽略对线程优先级的设定,这表示程序正确性不能依赖线程的优先级高低
注意:
线程优先级不能作为程序正确性的依赖,因为操作系统可以完全不用理会Java线程对于优先级的设定

1.4 线程的状态

 

 

 

 1.5 守护线程

Daemon线程是一种支持型线程,因为它主要被用作程序中后台调度以及支持性工作
当一个Java虚拟机中不存在非Daemon线程的时候,Java虚拟机将会退出。
可以通过调用Thread.setDaemon(true)将线程设置为Daemon线程
注意:
Daemon属性需要在启动线程之前设置,不能在启动线程之后设置
Daemon线程被用作完成支持性工作,但是在Java虚拟机退出时Daemon线程中的finally块并不一定会执行,因此在构建Daemon线程时,不能依靠finally块中的内容来确保执行关闭或清理资源的逻辑
 
main线程(非Daemon线程)在启动了线程DaemonRunner之后随着main方法执行完毕而终止,而此时Java虚拟机中已经没有非Daemon线程,虚拟机需要退出。Java虚拟机中的所有Daemon线程都需要立即终止,因此DaemonRunner立即终止,但是DaemonRunner中的finally块并没有执行

二、线程池技术

Java线程池(ThreadPool)详解 - 适AT - 博客园 (cnblogs.com)

https://www.cnblogs.com/kuoAT/p/6714762.html

 

 

 

posted @ 2021-10-13 01:23  微~粒  阅读(24)  评论(0)    收藏  举报