-3
簡単試してみたいデッドロック例です。私は問題が(Thread t1 = new Thread() {)
と(Thread t1 = new Thread() {)
にあることを知っています。Java - 並列処理デッドロック
ローカル変数t1の値は使用されません。
しかし、私はそれを修正することはできません。
public static void main(String[] args) {
final String passenger1 ="pick passenger1";
final String passenger2 ="pick passenger2";
Thread t1 = new Thread() {
public void run(){
synchronized (passenger1) {
System.out.println("Thread 1: locked passenger1 ");
try { Thread.sleep(100);} catch (Exception e) {}
System.out.println("Thread 1: waiting to get passenger 2 ");
synchronized (passenger2) {
System.out.println("Thread 1: locked passenger 2");
} } } };
Thread t2 = new Thread() {
public void run() {
synchronized (passenger2) {
System.out.println("Thread 2: locked passenger2 ");
try { Thread.sleep(100);}catch (Exception e) {}
System.out.println("Thread 2: waiting to get passenger1 ");
synchronized (passenger1) {
System.out.println("Thread 2: locked passenger1");
}
}
}
};
}
}
これを修正するために何をやってみましたか?また、実際にスレッドを開始することもありません。 – UnholySheep
[実行]/[デバッグ]をクリックしても何も起こりません –
実行をクリックすると自分のプログラムが起動しません –