Sab*_*han 6 java concurrency multithreading locking
在方法接口的API文档中,粘贴此代码示例,LocktryLock()
此方法的典型用法习惯是:
Run Code Online (Sandbox Code Playgroud)Lock lock = ...; if (lock.tryLock()) { try { // manipulate protected state } finally { lock.unlock(); } } else { // perform alternative actions }
我的问题是,这个用例在Java 5之前是不存在的还是人们通过其他技术来实现它?
我无法理解是否需要根据锁定可用性执行替代操作.
有人可以为此解释实际用例吗?
我确信这种技术不是直接替代synchronized编写无死锁代码.
一个直接的用例是处理一批元素的线程,偶尔尝试提交已处理的元素。如果获取锁失败,则将在下一次成功尝试或最终强制提交时提交元素。
\n\n另一个例子可以在 JRE 本身中找到,ForkJoinTask.helpExpungeStaleExceptions()是一种执行任务的方法,该任务可以由任意线程完成,但一次只能执行一个任务,因此只有成功获取锁的一个线程才会执行该任务,所有其他线程都会返回,因为锁不可用意味着已经有一个线程正在执行该任务。
如果将内部锁定功能(不支持可选)与可表示为普通对象状态的锁定逻辑分开,则可以在 Java\xc2\xa05 之前实现类似的功能。这个答案提供了一个例子。
\n| 归档时间: |
|
| 查看次数: |
7116 次 |
| 最近记录: |