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,我想知道 synchronize (lock) { ... } 其中lock是java.util.concurrent.locks.lock的一个实例,将lock视为任何其他对象,或视为try-finally惯用法,即 lock.lock(); try { ... } finally { lock.unlock(); } : 请注意,锁实例只是 正常对象和对象本身可以是 在同步模式中用作目标 陈述获取监视器锁 没有指定锁实例的类型 与调用 该实例的l

我想知道

synchronize (lock) {
    ... 
}
其中lock是
java.util.concurrent.locks.lock
的一个实例,将
lock
视为任何其他对象,或视为try-finally惯用法,即

 lock.lock(); 
 try {
     ... 
 } finally { 
    lock.unlock();
 }
:

请注意,锁实例只是 正常对象和对象本身可以是 在同步模式中用作目标 陈述获取监视器锁 没有指定锁实例的类型 与调用 该实例的lock()方法。它是 建议避免混淆 在这种情况下,您永远不会使用锁实例 方式,除了他们自己 实施


所以基本上,它被视为任何其他物体。不要这样做。

它会像对待任何其他对象一样对待锁。

可以应用C#编程语言中的lock语句来限制对代码特定部分的访问,一次只能访问一个线程。

@hhafez:“不要这样做”,因为文档中说“为了避免混淆,建议不要以这种方式使用锁实例,除非在它们自己的实现中使用。”这是一个Java问题,而不是C#问题。(我没有投反对票。)