こんにちは、私のクラスにはグローバルな日付があります。この日付は 2 つのスレッドで使用および変更されています。この日付の相互排除の問題を解決する必要があります。私はJavaの専門家ではありませんが、Cでは簡単です。例を次に示します。
lock(...)
use/modified global date
unlock(....)
Javaの特派員が必要です
こんにちは、私のクラスにはグローバルな日付があります。この日付は 2 つのスレッドで使用および変更されています。この日付の相互排除の問題を解決する必要があります。私はJavaの専門家ではありませんが、Cでは簡単です。例を次に示します。
lock(...)
use/modified global date
unlock(....)
Javaの特派員が必要です
まず、synchronized
ブロックを使用します。
Object dateLock = new Object(); // globally visible lock, declare it
// next to your date object
//...
synchronized(dateLock) {
// modify date
}
上記は 2 つのスレッドで十分です。読み取りが複数のスレッドによって頻繁に行われ、書き込みがめったに行われない場合など、より複雑なシナリオについては、ReadWriteLockを調べてください。
There are two approach you can use:
1) Use synchronized keywords:
synchronized(theGlobalDate) {
// do whatever modification you want
}
This is the basics in Java world.
2) In Java 5, there is new set of concurrent library, you can use locks for things you do somehting similar to what you did in C
private final ReentrantLock lock = new ReentrantLock();
.....
public void foo() {
lock.lock();
try {
// do whatever modification you want
} finally {
lock.unlock();
}
}