私はJavaを初めて使用し、Javaスレッドで同期されたコードブロックを実装する際に問題が発生します。
class btstep extends Thread
{
private static final Object lock = new Object();
public void run()
{
synchronized(lock)
{
System.out.println("3 ");
System.out.println("4 ");
}
}
}
class btevent extends Thread
{
private static final Object locko = new Object();
public void run()
{
synchronized(locko)
{
System.out.println("1 ");
System.out.println("2 ");
}
}
}
public class Interleaving
{
public static btevent bt = new btevent();
public static btstep bs = new btstep();
public static void main(String[] args)
{
bt.start();
bs.start();
}
}
このプログラムの実行中の出力は次のとおりです。
1
3
2
4
それは私が望むものではありません。同期されたコードブロックはシリアルではなくなり、出力として必要なものをインターリーブします
1
2
3
4
また
3
4
1
2
プログラムで何が間違っているのですか?