sleepとwaitは割り込みに応答できる
3329 ワード
sleepとwaitの違い:
1.sleepメソッドはスレッド静的メソッドであり、waitメソッドはObjectオブジェクトメソッドである.
2.sleepはスレッドをスリープさせ、ロックを解放しない.waitメソッドは、ロックを取得した場合に待機し、待機時にロックを解放する.
3.割り込みに応答できます.
出力:
1.sleepメソッドはスレッド静的メソッドであり、waitメソッドはObjectオブジェクトメソッドである.
2.sleepはスレッドをスリープさせ、ロックを解放しない.waitメソッドは、ロックを取得した場合に待機し、待機時にロックを解放する.
3.割り込みに応答できます.
public class Test {
static Object lock = new Object();
public static void main(String[] args) {
//
Thread t = new Thread(() -> {
System.out.println(" ");
long s = System.currentTimeMillis();
try {
Thread.sleep(100000);
} catch (InterruptedException e) {
System.out.println(" 2 " + (System.currentTimeMillis() - s));
}
});
t.start();
System.out.println(" ");
t.interrupt();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
}
//wait
System.out.println("-----------wait---------");
Thread t1 = new Thread(() -> {
synchronized(lock) {
System.out.println(" ");
long s = System.currentTimeMillis();
try {
lock.wait();
} catch (InterruptedException e) {
System.out.println(" wait1 " + (System.currentTimeMillis() - s));
}
}
});
t1.start();
System.out.println(" wait");
t1.interrupt();
}
}
出力:
2 0
-----------wait---------
wait
wait1 0