![](/img/trans.png)
[英]How to fix main method not being executed in java, when no error is showing?
[英]How to lock an instance when a method is being executed
我不知道这个问题是否多余,但是我在寻找了2个小时后才找到答案...
我正在尝试制作一个使用多个线程和一个类的共享实例的程序。 当调用此实例上的某个方法时,我们将其称为“重新连接”,其他方法调用应等待直到“重新连接”执行完毕。 我该如何实现?
只是:
synchronized (this) { //////// }
要么:
public ReentrantLock lock = new ReentrantLock();
public void reconnect() {
lock.lock();
////
lock.unlock();
}
对不起,如果已经问过了。 谢谢阅读。
加法1:
注释中提到了这一点,当执行除“重新连接”以外的方法并调用“重新连接”时,“重新连接”应等待,直到其他所有方法都执行完毕。
取决于程序的复杂性。 第一个足以完成非常基本的任务。 后者(锁定对象)是适用于更高级任务的高级并发对象的一部分。 与隐式锁相比,Lock对象的最大优点是它们能够回避获取锁的企图。
在Java版本5.0之前,只有第一个选项(或等效的synchronized
方法修饰符)可用。 第二个选项在5.0和更高版本中可用。
如果正确使用,则两者是等效的(第二个示例应使用try-finally块进行扩展)
第一种方法的缺点是您只能使用一个条件变量,否则使用起来会更方便(更不会出错)。
如果要多个条件变量,则必须使用第二种形式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.