JUC——线程同步锁(LockSupport阻塞原语)
2018-06-18 01:23:58来源:未知 阅读 ()
java.util.concurrent.locks.LockSupport这个是一个独立的类,这个类的主要功能是用来解决Thread里面提供的suspend()(挂起线程)、resume()(恢复运行)方法,这个两个方法的本质上会存在有死锁的嫌疑,所以从JDK1.4开始将其就已经列为不建议使用的方法了。但是在JDK1.5开发JUC框架之后,考虑到JUC框架之中的各种实现机制时开始试图还原之前被废弃的操作,于是就有了LockSupport这个类。
这个类里面有两个方法:
- 挂起
public static void park(Object blocker) { Thread t = Thread.currentThread(); setBlocker(t, blocker); unsafe.park(false, 0L); setBlocker(t, null); }
- 恢复
public static void unpark(Thread thread) { if (thread != null) unsafe.unpark(thread); }
范例:观察挂起与恢复执行
package so.strong.mall.concurrent; import java.util.concurrent.locks.LockSupport; public class LockSupportDemo { private static String msg = null; public static void main(String[] args) { final Thread mainThread = Thread.currentThread(); //获取当前线程 new Thread(new Runnable() { @Override public void run() { try { msg = "itermis.com"; } finally { LockSupport.unpark(mainThread); //不管线程的操作如何,都要解除挂起状态 } } }).start(); LockSupport.park(mainThread); System.out.println("**********主线程执行完毕,msg=" + msg); } }
**********主线程执行完毕,msg=itermis.com
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 最详细的java多线程教程来了 2020-06-08
- 系统化学习多线程(一) 2020-06-08
- 多线程:生产者消费者(管程法、信号灯法) 2020-06-01
- 如何合理地估算线程池大小? 2020-05-31
- 那些面试官必问的JAVA多线程和并发面试题及回答 2020-05-28
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash