LockSupportがブロックされた状態にスレッドを見ることができるので、ロックがブロックされた状態になります場合にのみ、私はメモリを得ることができないので、?ブロックされた状態、それにスレッドを作成する方法はありません一瞬思っ
ブロックさにビットトリガースレッドを発見しました
インターネット上のメソッドは次のように述べています:
(1)スレッドスリープ:スレッドをブロック状態にするThread.sleep(ロングミリ秒)メソッド。
(2)スレッド待機:Objectクラスのwait()メソッド、
(3)スレッドの礼儀、Thread.yield()メソッド
(4)スレッドの自己終了、結合()メソッド、
(5)サスペンド()メソッドとレジューム()メソッド
上記の方法ではスレッドがブロックされる可能性がありますが、ブロック状態になって初めてスレッドをブロックできると思います。あまりにもぎこちないかもしれません。この文は少し偏っていると思います。 、次の写真を覚えているので:
本が間違っている可能性はありますか?
それを試してください
1.sleep()メソッド
public static void main(String[] args) {
new Thread(()->{
try {
System.out.println("正在睡眠");
Thread.sleep(100000);
} catch (InterruptedException e) {
e.printStackTrace();
}
},"t1").start();
}
スレッドを表示するには、jpsを使用します。スレッド
のステータスを表示するには、jstackを使用します。
ああ、TimeWaiting、スレッドはタイムアウト待機状態です。
2. waitメソッド
Object o = new Object();
Thread t2 = new Thread(() -> {
synchronized (o) {
try {
System.out.println("执行等待!");
o.wait();
} catch (InterruptedException e) {
}
}
}, "t2");
t2.start();
Thread.sleep(100000);
o.notify();
待機状態
3.同期(ブロック状態)
Object o = new Object();
new Thread(() -> {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (o) {
}
}, "t1").start();
//让t2 先拿到锁,然后就一直处于wait状态,我们再来观察t1
new Thread(() -> {
synchronized (o) {
try {
Thread.sleep(100000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}, "t2").start();
4.参加する
Thread t1 = new Thread(() -> {
try {
Thread.sleep(10000000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}, "t1");
t1.start();
//先让t1 跑起来 观察t2
Thread.sleep(10);
Thread t2 = new Thread(() -> {
try {
t1.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}, "t2");
t2.start();
5.収量
CPUタイムスライスを放棄する方法は、タイムスライスを放棄するには短すぎるため、操作が少し難しい
後で更新する方法を考えます
6.LockSupport
Thread t1 = new Thread(() -> {
LockSupport.park();
}, "t1");
t1.start();
Thread.sleep(100000);
LockSupport.unpark(t1);
結論:
最後のLockSupportは、以前のすべてのロックサポートを無効にすることができます。ブロッキング状態に入る場合のみ、ブロッキングスレッドと呼ばれます。
おそらくこの部分は明確に定義されていないので、深く掘り下げる必要はなく、理解するだけでよく、日々の開発でこの知識の部分を使用するべきではありません。
そして、あなたがスレッドをブロックしたい場合:スレッドをブロックする
役割を果たすことができます。