相关疑难解决方法(0)

Java:wait()从synchronized块释放锁定

我的印象是wait()释放所有锁,但我发现这篇帖子说的

"在同步方法中调用wait是一种获取内部锁的简单方法"

请澄清我有点困惑.

http://docs.oracle.com/javase/tutorial/essential/concurrency/guardmeth.html

java concurrency multithreading locking wait

57
推荐指数
3
解决办法
4万
查看次数

如何避免嵌套同步和导致的死锁

我需要在一个功能中锁定两个对象,并且当前代码如下所示;

Object obj1  = ...//get from somewhere
Object obj2 = ...//get from somewhere

synchronized(obj1){
  ...//blah
  synchronized(obj2){
     ...//blah
  }
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,如果另一个线程使用obj1运行这段代码并且两个反转,这是一个简单而直接的死锁配方.
有没有办法使用concurrency-utils锁来避免这种情况?

我正在考虑维护一个物体及其锁的地图,并验证它们是否可以使用,但似乎无法想出一种可以预测锁定顺序的清洁方式.

java concurrency locks

2
推荐指数
1
解决办法
3889
查看次数

标签 统计

concurrency ×2

java ×2

locking ×1

locks ×1

multithreading ×1

wait ×1