- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在 API docs方法tryLock()
的Lock
接口(interface),粘贴此代码示例,
A typical usage idiom for this method would be:
Lock lock = ...;
if (lock.tryLock()) {
try {
// manipulate protected state
} finally {
lock.unlock();
}
} else {
// perform alternative actions
}
我的问题是,这个用例在 Java 5 之前是否不存在,或者人们过去常常通过其他一些技术来实现它?
我无法理解根据锁定可用性执行执行替代操作的必要性。
有人可以解释一下这个的实际用例吗?
我确信这种技术不能直接替代 synchronized
来编写无死锁代码。
最佳答案
一个直接的用例是线程处理一批元素,偶尔尝试提交已处理的元素。如果获取锁失败,元素将在下一次成功尝试或最后一次强制提交时提交。
另一个示例可以在 JRE 本身中找到,ForkJoinTask.helpExpungeStaleExceptions()
是一种执行任务的方法,可以由任意线程完成,但一次只能执行一个任务,因此只有成功获取锁的一个线程会执行它,所有其他线程都会返回,因为锁不可用意味着有已经是执行任务的线程。
如果将不支持可选的内在锁定功能与可以表示为普通对象状态的锁定逻辑分开,则可以在 Java 5 之前实现类似的功能。 This answer提供了一个例子。
关于java - Lock.tryLock() 的用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41788074/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!