LockSupport
2016-05-27 21:07
567 查看
LockSupport是高级线程同步类的基础,用来block和释放线程。这里要区别notify和wait的点在于这里可以先unpark,再park。(有点类似于unpark等于-1,park等于+1。+1-1=0 或者-1+1=0 ,只有1的状态是阻塞的。)
Blocker参数是用来辅助排查阻塞而已。
Blocker参数是用来辅助排查阻塞而已。
package com.github; import java.util.concurrent.locks.LockSupport; class MyThread extends Thread { private Object object; public MyThread(Object object) { this.object = object; } public void run() { System.out.println("before unpark"); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } // 获取blocker System.out.println("Blocker info " + LockSupport.getBlocker((Thread) object)); // 释放许可 LockSupport.unpark((Thread) object); // 再次获取blocker try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Blocker info " + LockSupport.getBlocker((Thread) object)); System.out.println("after unpark"); } } public class App { public static void main(String[] args) { MyThread myThread = new MyThread(Thread.currentThread()); myThread.start(); System.out.println("before park"); // 获取许可 LockSupport.park("ParkAndUnparkDemo"); System.out.println("after park"); } }
相关文章推荐
- 十秒钟搞定RecyclerView数据绑定
- MYSQLI多条语句
- linux
- 动态规划1005
- 第三方类AFNetworking
- 图像和视觉相关的一些常用的代码和学习资源
- java读取大文件 超大文件的几种方法
- bash 读取行
- 有道字典主窗口初始化失败、暴风影音停止工作的诡异问题
- Aptana studio 3 自定义编码颜色
- [置顶] Markdown使用的数学符号和其他东西
- vertica-console
- 第13周项目-分数中的运算符重载
- 软件工程---阅读《构建之法》第8、9、10章读后感
- 1013. 数素数 (20)
- onmouseover 事件缩略图片滑动 修正版
- 第10章-基于树的方法(3)-树的改进-集成方法
- 缩略图实现思路
- poj 1015 Jury Compromise
- linux下的简单文件读写锁的操作