LockSupport是高级线程同步类的基础,用来block和释放线程。这里要区别notify和wait的点在于这里可以先unpark,再park。(有点类似于unpark等于-1,park等于+1。+1-1=0 或者-1+1=0 ,只有1的状态是阻塞的。)

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");
}
}

最新文章

  1. HashSet的故事----Jdk源码解读
  2. 一个非常牛比的前端google插件
  3. Linux 端口-> PID -> 启动目录
  4. Oracle、Microsoft SQL Server、Mysql
  5. 学习Python的第一课(简单的单元测试)
  6. iptables基本操作
  7. Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境搭建教程
  8. php PDO链接SQL SERVER
  9. Git PHP提交
  10. SharePoint 2013 图文开发系列之列表定义高级篇
  11. c++入门篇八
  12. 输出日文CSV乱码问题
  13. Java并发编程73道面试题及答案
  14. springmvc的异步处理
  15. usb-cam(1)安装
  16. java 注解默认值
  17. python中的全局变量和局部变量(转)
  18. 【转】朱兆祺教你如何攻破C语言学习、笔试与机试的难点(连载)
  19. 【加密算法】MD5
  20. 在Windows使用VC编译ICU

热门文章

  1. Hibernate连接数据库超时设置autoReconnect=true
  2. Spinner
  3. 有用的git建议
  4. QQ空间HD(6)-实现自定义的选项卡切换效果
  5. 大熊君大话NodeJS之------(Url,QueryString,Path)模块
  6. AndroidStudio使用笔记
  7. easyui-textbox回车事件
  8. Idea 开发 web项目
  9. 机器学习 k-临近算法
  10. 问题--feed列表有新闻重复的问题