[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends-ml 12438] Re: SharedCounter の実験 (1) - 再送
- From: Yasuhiro Endoh <quiver2k@xxxxxxxxx>
- Date: Thu, 17 Aug 2006 05:14:53 +0900
- Domainkey-signature: a=rsa-sha1; q=dns; c=nofws; s=ybb20050223; d=ybb.ne.jp; b=X2F5//prDozkH353neuPgH8OFSf9s0CfG87Yh3Trd4jw9uM6ALjaLP9Vy0N92rHlgj7HVSU4KFUy6exhD6O/5DInHMRTc01gTp87JYuvY9GcZQcSJZIUa3aWe1ZxPKci ;
遠藤です。
> Threadクラスのinterrupt()、isInterrupted()が可視性の保証をしているのか
> 検討してみたいと思っています(今回の最適化の動きからすると、保証しなくて
> もよいものかもしれません)。
可視性が保障されていないとすると
こんな風にしないといけないのでしょうか。。。
たしかにこれならserver vmでも終了しましたが。
synchronizedをコメントアウトすると
終了しませんでした。
環境:
JDK 1.5.0_08
CPU 1つ
VM Server VM
public class SharedCounterIncrementor implements Runnable {
public void run() {
while (true) {
Thread t = Thread.currentThread();
synchronized(t) {
if (t.isInterrupted()) {
System.out.println("interrupted");
return;
}
}
}
}
public final static void main(final String[] args) throws Exception {
SharedCounterIncrementor sci = new SharedCounterIncrementor();
Thread t1 = new Thread(sci);
t1.start();
Thread.sleep(3000);
synchronized(t1) {
t1.interrupt();
}
t1.join();
}
}
--
// Y. Endoh