博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java多线程细微知识点
阅读量:7118 次
发布时间:2019-06-28

本文共 732 字,大约阅读时间需要 2 分钟。

1.interface Lcok

有tryLock()方法和lock()方法一样都会取得锁,取不到它会返回boolean值false。我们可以将thread导向其他不需要取得lock的task上。

此方法要在指定期间内等到lock怎么办?有带两个参数的方法

boolean tryLock(long time,TimeUnit unit)throws InterruptedException;

第一个参数指定时间单位的数目

第二个参数指定第一个参数应用什么单位来解释

如果要指定50毫秒。

long的值设置成50,TimeUnit值设置成TimeUnit.MILLISECONDS

此方法会在指定时间内等待lock类时tryLock()方法,会在没有取得lock时返回false

2.nested lock --用synchronized,系统会报错追踪递归取得lock的数目。

ReentrantLock对象会对内部的nested lock要求计数递增。调用unlock()递减此计数

是否有可能检测lock被递归取得了多少次?使用synchronized是不能知道的。Lock interface没有提供方法来检测嵌套取得的次数。

在ReentrantLock中public int getHoldCount();方法返回当前thread对lock所要求的数量。具体看文档。

3.两个同步方法,取得两个以上的lock的时候顺序要相同,否则出现死锁。参考第二章后半部分。

4.Condition的应用

5.线程不能共享存储器上的数据。只能共享主存上的。

转载于:https://www.cnblogs.com/conglanjun/p/5339844.html

你可能感兴趣的文章
实现Android和PC之间的蓝牙通信
查看>>
rails将类常量重构到数据库对应的表中之二
查看>>
微软面试题:写程序找出二叉树的深度
查看>>
[Google Guava] 1.2-前置条件
查看>>
OEA框架 2.9 Pre-Alpha 源码公布
查看>>
我的MYSQL学习心得(十三) 权限管理
查看>>
Spring Data —— 完全统一的API?
查看>>
[翻译] JTBorderDotAnimation
查看>>
浏览器兼容性小记-DOM篇(二)
查看>>
【Oracle】lsnrctl reload 命令简介
查看>>
091023 T GIX4 项目中的 智能部署 和 智能客户端
查看>>
Mondrian and OLAP
查看>>
【音乐分享】Let Me Go
查看>>
java写一个爬虫
查看>>
Drill官网文档翻译六:存储插件的注册
查看>>
poj 1502 单源最短路径
查看>>
CUDNN v3特性
查看>>
为什么C# md5 32位加密算法,密码明文会出现31位
查看>>
怎么通过java去调用并执行shell脚本以及问题总结
查看>>
Android桌面悬浮窗效果实现,仿360手机卫士悬浮窗效果
查看>>