在线程获取之前调用释放

时间:2014-01-14 06:06:43

标签: java locking mutual-exclusion

我正在编写一个包含多个线程的小程序,我正在使用Semaphore强制执行互斥。但是问题触发了我的脑袋。

如果在Semaphore.release之前调用Semaphore.acquire会怎样?

我的工作正常。这是不好的做法还是可以的?

1 个答案:

答案 0 :(得分:1)

我认为你在谈论监控原则。这用于在访问内存上的数据时避免死锁,这与许多线程或进程共享。

如果您这样做,请告知自己Java中的synchronized块。这确保没有其他线程可以在其方法体中持有同步块的线程的同时访问此对象。如果其他人想要访问这些数据,当你处于同步阻塞状态时,其他人必须等到当前工作线程将此状态保留在相关对象/数据上。