admin 管理员组

文章数量: 887007

《Java多线程编程核心技术》阅读摘要(一)

T1: 进程与线程的关系

    windows任务管理系统里 .exe的运行程序就是进程,内部不同的操作就线程。如:微信与微信内不同的聊天窗口。

T2:多线程调用特点:随机性

T3:start和run方法特点

start是启动一个线程, run是执行程序; start属于异步方法,调用后等待CPU调用,而run是同步的,必须等主线程main调用run结束后才能继续。

T4:currentThread():查看当前线程名;isAlive(): 判断当前线程是否处于活动状态;

T5: 终止一个线程,一般使用interrupt(),但是中止不会立即停止线程,只是在线程中打了一个停止的标志。

T6: interrupted() :测试当前线程是否是中断状态,并在执行后将状态清除;

isInterrupted():测试当前线程是否是中断状态,不清除状态。

用处:判断线程是否是运行状态,如果不是就return;

⭐️线程停止建议使用抛异常方式

如果线程在沉睡中停止,那么就会抛出异常,并且清除停止的状态值。

T7:为什么废除Thread.stop()

1.将线程强制停止会导致一些清理工作停止;

2.这个线程如果是包含了对象同步锁,就会解除锁定,导致数据操作不一致问题。

T8:为什么废除Thread.suspend()和Thread.resume()

1.容易造成独占,其他线程无法访问公共对象;

2.因线程暂停导致的数据不同步问题。

T9:线程优先级的继承特性,规则性和随机性

继承特性:在A线程里创建B线程,B线程也会继承A的优先级。

规则性:CPU会尽量把资源给优先级高的线程。

随机性:优先级高的线程未必每次都先执行完

T10:守护线程

守护线程与非守护线程的关系是:

只要非守护线程还没有结束,守护线程就会一直存在;非守护线程结束,那么守护线程也会结束。

典型的例子就是垃圾回收线程,这类线程是为了给其他线程提供便利的服务。

 

本文标签: 《Java多线程编程核心技术》阅读摘要(一)