私はJavaスレッド、特にデッドロックの概念を調べていましたが、以下のコードを見つけました:
public static void main(String... a) {
final String o1 = "Lock ";
final String o2 = "Step ";
Thread th1 = new Thread() {
public void run() {
while (true) {
synchronized (o1) {
synchronized (o2) {
System.out.println(o1 + o2);
}
}
}
}
};
Thread th2 = new Thread() {
public void run() {
while (true) {
synchronized (o2) {
synchronized (o1) {
System.out.println(o2 + o1);
}
}
}
}
};
new Thread(th1).start();
new Thread(th2).start();
}
私の理解によると、プログラムが何をしているのかを説明してください。あるスレッドがロックを取得し、別のロックを取得しようとしていて、同じことが他のスレッドによって行われています。上記のプログラムのデッドロックを作成する他の方法については、アドバイスしてください。また、上記のコードで取得されているロックは、インスタンス レベルのロックです。