Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 发布一份;同步的;锁_Java_Multithreading_Synchronization_Locking - Fatal编程技术网

Java 发布一份;同步的;锁

Java 发布一份;同步的;锁,java,multithreading,synchronization,locking,Java,Multithreading,Synchronization,Locking,使用synchronized是否可以执行类似操作,或者是否需要使用java.util…Lock: public void outer() { synchronized(lock) { inner(); } } public void inner() { thing1(); release(lock) { result = doLongNetworkRequest(); } thing2(result); } 您可以使用。它们有lock()和unlock()在同步块期间,您

使用
synchronized
是否可以执行类似操作,或者是否需要使用
java.util…Lock

public void outer() {
 synchronized(lock) {
  inner();
 }
}

public void inner() {
 thing1();
 release(lock) {
  result = doLongNetworkRequest();
 }
 thing2(result);
}

您可以使用。它们有
lock()
unlock()

在同步块期间,您无法释放监视器。您必须使用一两个锁来完成您想要的操作。

一定要使用
最后再试一次
(正确)。/你确定要这样构造你的代码吗?@Tom Hawtin:是的,我在处理锁时总是使用
finally
。结构是这样的,因为实际上我有很多内部方法,出于干燥的原因,锁在
外部。你能提供一个吗?