私は同じファイルに以下のプログラムを持っています。 run()メソッドを同期しました。なぜ複数のスレッドを同時に実行できる同期メソッド?
class MyThread2 implements Runnable {
Thread t;
MyThread2(String s) {
t=new Thread(this,s);
t.start();
}
public synchronized void run() {
for (int i=0;i<3;i++) {
System.out.println("Thread name : "+ Thread.currentThread).getName());
try {
t.sleep(1000);
}
catch (InterruptedException e) {
e.getMessage();
}
}
}
}
class TestSync {
public static void main(String[] args) {
MyThread2 m1=new MyThread2("My Thread 1");
c.fun();
}
}
class c {
static void fun() {
MyThread2 m1=new MyThread2("My Thread 4");
}
}
出力は、私の質問は、なぜ「マイスレッド1」と並行して「マイスレッド4」スレッドのアクセスの両方を可能にする方法を同期化されている
Thread name : My Thread 1
Thread name : My Thread 4
Thread name : My Thread 4
Thread name : My Thread 1
Thread name : My Thread 1
Thread name : My Thread 4
のですか?
あなたが投稿コード少なくとも一つの構文がありますエラーであり、実際には読みにくいです。実際のコードを投稿して読みやすいようにしてください。 – Mat
誤って考えると、メソッドをロックしている代わりに、インスタンスをロックするメソッドがあります。我々は唯一のクラスのインスタンスと複数のスレッドがある場合はその答え –