- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
关于这个https://docs.oracle.com/javase/tutorial/essential/concurrency/newlocks.html
我们有一个我无法理解的 Bow/BowBack 示例,我想要详细解释到底发生了什么
确实,我删除了一些我不明白其用途的行:
if (! (myLock && yourLock)) {
if (myLock) {
lock.unlock();
}
if (yourLock) {
bower.lock.unlock();
}
}
而且它仍然有效!
获取锁然后释放它的目的是什么,
在做这项工作之前?然后完成工作后再次释放!!
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import java.util.Random;
public class Safelock {
static class Friend {
private final String name;
private final Lock lock = new ReentrantLock();
public Friend(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public boolean impendingBow(Friend bower) {
Boolean myLock = false;
Boolean yourLock = false;
try {
myLock = lock.tryLock();
yourLock = bower.lock.tryLock();
} finally {
if (! (myLock && yourLock)) {
if (myLock) {
lock.unlock();
}
if (yourLock) {
bower.lock.unlock();
}
}
}
return myLock && yourLock;
}
public void bow(Friend bower) {
if (impendingBow(bower)) {
try {
System.out.format("%s: %s has"
+ " bowed to me!%n",
this.name, bower.getName());
bower.bowBack(this);
} finally {
lock.unlock();
bower.lock.unlock();
}
} else {
System.out.format("%s: %s started"
+ " to bow to me, but saw that"
+ " I was already bowing to"
+ " him.%n",
this.name, bower.getName());
}
}
public void bowBack(Friend bower) {
System.out.format("%s: %s has" +
" bowed back to me!%n",
this.name, bower.getName());
}
}
static class BowLoop implements Runnable {
private Friend bower;
private Friend bowee;
public BowLoop(Friend bower, Friend bowee) {
this.bower = bower;
this.bowee = bowee;
}
public void run() {
Random random = new Random();
for (;;) {
try {
Thread.sleep(random.nextInt(10));
} catch (InterruptedException e) {}
bowee.bow(bower);
}
}
}
public static void main(String[] args) {
final Friend alphonse =
new Friend("Alphonse");
final Friend gaston =
new Friend("Gaston");
new Thread(new BowLoop(alphonse, gaston)).start();
new Thread(new BowLoop(gaston, alphonse)).start();
}
}
最佳答案
如果线程成功获取锁(或已经拥有锁),
tryLock()
返回 true。您不理解的代码会尝试获取两个 friend 的锁。如果至少其中一个无法获得:
if (! (myLock && yourLock)) {
然后它释放所获得的(如果有的话):
if (myLock) {
lock.unlock();
}
if (yourLock) {
bower.lock.unlock();
}
因为该方法的重点是,如果两个锁都成功获得,则返回 true,如果两个锁均未成功获得,则返回 false,并且不持有任何锁。
关于java - Bow/BowBack 线程锁解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32024490/
我正在创建一袋视觉词来对视频进行分类。我没有使用 SURF 描述符,这就是为什么我不能使用 OpenCV 的 BOWImgDescriptorExtractor 来实现此目的。我提取了我的描述符并自己
关于这个https://docs.oracle.com/javase/tutorial/essential/concurrency/newlocks.html 我们有一个我无法理解的 Bow/BowB
我正在尝试使用 SVM 分类和 BoW 聚类算法实现实时对象分类程序。我的问题是选择正面和负面训练图像的良好做法是什么? 正面图像集 背景应该为空吗? 意思是,图像应该只包含感兴趣的对象吗?当实时实现
有人可以向我解释 Tensorflow BoW 编码器正在做什么/返回什么吗?我希望得到每个文档的字数向量(就像在 sklearn 中一样),但是,显然它正在做一些更花哨的事情。 在这个例子中: ht
我需要做 BOW(词袋),但我只有描述的图像关键点。目前,我已经使用以下方法获得了词汇表: cv::BOWKMeansTrainer bowtrainerCN(numCenters); //num c
我正在尝试在 CSS3 中制作一个直 Angular 三 Angular 形,我有这一部分。但是我怎样才能用弧形/弓形制作呢? (很抱歉,我不知道如何最好地将其翻译成英文)。 这是我需要的: 这可能吗
我正在尝试编写一个代码,用给定的输入绘制一个领结。 领结: * * *** *** ********** *** *** * * 我在这里研究 2 种
我想在 Python 中包装额外的 OpenCV 函数,例如 BoW,我该怎么做? 一种方法可能是在 modules/python 下的 CMakeLists.txt 中添加头文件,但是我如何只编译
我无法训练 SVM 识别我的对象。我正在尝试使用 SURF + Bag Of Words + SVM 来做到这一点。我的问题是分类器没有检测到任何东西。结果全部为0。 这是我的代码: Ptr dete
在 java 文档示例中,lock.unlock()方法使用了两次,一次是在 impendingBow() 方法中,一次是在 Bow() 方法中。我的问题是,不应该lock.unlock() impe
我正在尝试构建文本分类模型。我的目标是将 10000 个文档中的每个段落分类为是否包含有关“罢工事件”的信息。 首先,我按照基本的预处理步骤将段落转换为术语文档矩阵 (CountVectorizer)
我一直在尝试使用关键点和词袋技术在 Python OpenCV 3.2.0 中创建图像分类器。经过一番阅读后,我发现我可以按如下方式执行此操作 使用 AKAZE 提取图像描述符 对描述符进行k-mea
我正在尝试在 opencv 中使用 Freak 来检测特征并提取描述符,然后构建我的 BOW 词汇表,并为每个图像使用词汇表来匹配 BOW。你知道,整件事。我知道 BOW 可以与 SIFT 或 SUR
我在 android 中使用 Here map sdk。我已将弓形动画应用于居中标记和所有其他内容。当我将它与 ios 代码进行比较时,它比 ios 慢。我怎样才能使这里 map 的内置动画更快? 谢
我必须使用 OpenCV 2.4.6 来做 BOW(词袋),我所有的代码都是 C++。现在我想用 python 来做。 我搜索了 OpenCV-python 引用资料 ( http://opencv.
我在许多论文中看到,在使用 ORB 特征处理特征匹配时需要使用汉明距离。我一直在使用 C++ 中的 opencv 中的 BoW 模型,发现与使用 BruteForce 匹配器(Hamming 或 Ha
据我所知,在 Bag Of Words 方法中,特征是一组单词及其在文档中的频率计数。另一方面,N-grams,例如unigrams也完全一样,只是没有考虑单词出现的频率。 我想使用 sklearn
我正在尝试使用 NodeJS 中的请求模块发送对 Pitney Bownes Reverse-Geolocation API 的访问。 发送以下 HTTP 请求会返回错误。 request("http
我是一名优秀的程序员,十分优秀!