1

私はJavaのスレッドが初めてなので、この疑問があります。「同期された非静的メソッドブロック」では、1つのスレッドのみがブロックに入ることができると読みました(もちろん、非静的ブロックの1つのインスタンスに対して)。しかし、うまくいかないようです。何か不足していますか?次のコードを見てください。

class A extends Thread
{
    public void run() 
    {
        B.b.add();
    }
}

class B
{
    static B b=new B();
    int i;
    public synchronized void add()
    {
        i++;
    }
}

public class Sample
{
    public static void main(String[] args) 
    {
        for(int i=0;i<10;i++)
        {
            new A().start();
        }
        System.out.println(B.b.i);
    }
}
4

1 に答える 1