目录
目的
线程通信的目的是为了实现线程之间的数据交互和相互协作。
通信的方式
主要以JDK-API为主

文件共享/网络共享

变量共享

线程协作-JDK API

API-被弃用的suspend和resume
作用:调用suspend挂起目标线程,通过resume可以恢复线程执行。
弃用原因:容易写出死锁代码。
- suspend挂起后不会释放锁,会导致死锁。
- suspend要比resume后执行,否则会出现死锁。
API-wait/notify机制
注意:会自动解锁,但是调用顺序有要求,在一定条件下也会出现死锁。
Object.wait();
Object.notifyAll();

API-park/unpark机制
原理:令牌机制,线程调用park则等待“许可”,unpark方法为制定线程提供“许可(permit)”。
LockSupport.park();
LockSupport.unpark(Thread.class);

伪唤醒

本文深入探讨了线程通信的重要性及其实现方式,包括文件共享、变量共享和多种JDK API如suspend/resume、wait/notify及park/unpark机制。特别强调了API的正确使用避免死锁,以及不同机制的特点与原理。
1613

被折叠的 条评论
为什么被折叠?



