LockSupport が JDK の一部であることは知っていますが、以下の実装が意味的に正しいかどうか疑問に思っています。Object.wait がスレッドの割り込みの問題を処理できることを確認してください。私の質問はパフォーマンスに関するものではありません。ただし、ソリューションが待機、通知、同期などの基本的な構造のみを使用している限り、ソリューションを改善するための提案をいただければ幸いです。
どうもありがとう。
final class LockSupport {
static void park(long time) {
Thread th = Thread.currentThread();
if (th instanceof MyThread) {
MyThread h = (MyThread)th;
synchronized (h.obj) {
if (h.permit) {
h.permit = false;
return;
}
try {
h.obj.wait(time);
} catch (InterruptedException e) { }
}
}
}
static void unpark(MyThread h) {
synchronized (h.obj) {
h.permit = true;
h.obj.notify();
}
}
}
abstract class MyThread extends Thread {
public Object obj = new Object();
public boolean permit = true;
}