深入学习Lock锁(2)——LockSupport工具类

news/2024/7/3 1:38:37

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

    在同步组件中,当需要阻塞或唤醒一个线程的时候,都会使用LockSupport工具类来完成相应 工作。LockSupport定义了一组的公共静态方法,这些方法提供了最基本的线程阻塞和唤醒功能,而LockSupport也成为构建同步组件的基础工具。

    LockSupport定义了一组以park开头的方法用来阻塞当前线程,以及unpark(Thread thread) 方法来唤醒一个被阻塞的线程。

  1. public static void park():阻塞当前线程,如果调用unpark(Thread thread) 方法解除阻塞或者中断线程该方法才能返回。
  2. public static void parkNanos( long nanos):在park()方法的基础上增加了超时返回条件。
  3. public static void parkUntil(long deadline):阻塞当前线程,直到从1970年到deadline毫秒数的某一时刻
  4. public static void unpark(Thread thread):唤醒处于阻塞状态的线程。

    在Java 6中,LockSupport增加了park(Object blocker)、parkNanos(Object blocker,long nanos) 和parkUntil(Object blocker,long deadline)3个方法,用于实现阻塞当前线程的功能,其中参数 blocker是用来标识当前线程在等待的对象(以下称为阻塞对象),该对象主要用于问题排查和系统监控。因为当线程阻塞(使用synchronized关键字)在一个对象上时,通过线程dump能够 查看到该线程的阻塞对象,方便问题定位,而Java 5推出的Lock等并发工具时却遗漏了这一 点,致使在线程dump时无法提供阻塞对象的信息。因此,在Java 6中,LockSupport新增了上述3 个含有阻塞对象的park方法,用以替代原有的park方法。

 

转载于:https://my.oschina.net/ProgramerLife/blog/1818236


http://lihuaxi.xjx100.cn/news/238076.html

相关文章

自动化运维工具Saltstack(一)

1、saltstack简介: 什么是saltstack? saltstack是基于python开发的一套C/S架构配置管理工具 使用SSL证书签方的方式进行认证管理 号称世界上最快的消息队列ZeroMQ使得SaltStack能快速在成千上万台机器上进行各种操作 采用RSA Key方式确认身份 传输采用AE…

JavaScript词法作用域的简单介绍

by Michael McMillan迈克尔麦克米兰(Michael McMillan) JavaScript词法作用域的简单介绍 (An easy intro to Lexical Scoping in JavaScript) Lexical scoping is a topic that frightens many programmers. One of the best explanations of lexical scoping can be found in…

非对称加密及RSA算法

想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】 链客,有问必答!最近在学习区块链相关的知识,发现其保证去中心化的一个重要的手段就是基于密码学中的非对称加密。 何为非对称加密? 在回答这个问题之前…

处理器拦截器(HandlerInterceptor)详解

处理器拦截器(HandlerInterceptor)详解 编程界的小学生 关注 2017.04.06 15:19* 字数 881 阅读 657评论 0喜欢 4简介SpringWebMVC的处理器拦截器,类似于Servlet开发中的过滤器Filter,用于处理器进行预处理和后处理。 应用场景1、日…

saltstack实现haproxy+keepalived负载均衡+高可用(二)

一键部署haproxykeepalived实现负载均衡高可用 实验环境: !!!! 特别注意: www.westos.org为test1的minion名字 test1: 172.25.1.11 nginx master minion test2: 172.25.…

python学习day3

1丶 用户先进行登陆如果用户名在文件中且用户密码也正确就登陆成功调用购物车函数,如果用户用户名输入正确密码错误,提示用户密码错误且重新输入,如果用户 输入用户名不存在,提示用户是否创建该用户,调用注册函数。 1.…

以太坊交易事件,日志的理解

想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】 链客,有问必答!Ethereum transation event and log 以太坊交易事件的功能有三个: 用于返回智能合约执行过程中的返回值到用户界面同步触发前端用户界面事件便宜的…

Phpcms V9手机门户设置教程:怎么用PC V9做手机网站

一、在PHPcms V9管理后台设置手机门户 1.1、开启手机网站。位置:模块 》手机门户 》 添加手机站点,具体设置可参照截图: 填写站点名和LOGO文件相对位置,绑定用于手机网站的二级域名m.cmsyou.com,域名以http://开头。 1…