-1

嗨,伙计,我班上有一个全球日期,这个日期被两个线程使用和修改,我需要解决这个日期的互斥问题。我不是 java 专家,用 c 语言很简单,例如:

lock(...)
use/modified global date
unlock(....)

我需要java中的通讯员

4

2 回答 2

1

对于初学者,请使用synchronized块:

Object dateLock = new Object(); // globally visible lock, declare it 
                                // next to your date object

//...

synchronized(dateLock) {
   // modify date
}

以上对于两个线程来说已经足够了。对于更复杂的场景,例如经常由多个线程完成读取并且很少写入时,请查看ReadWriteLock

于 2012-09-10T07:48:59.713 回答
0

您可以使用两种方法:

1)使用同步关键字:

synchronized(theGlobalDate) {
  // do whatever modification you want
}

这是Java世界的基础。

2) 在 Java 5 中,有一组新的并发库,你可以使用锁来做一些类似于你在 C 中所做的事情

private final ReentrantLock lock = new ReentrantLock();

.....

public void foo() { 
  lock.lock();
  try {
    // do whatever modification you want
  } finally {
    lock.unlock();
  }
}
于 2012-09-10T07:55:55.900 回答