동기화 된 블록과 관련하여 의심의 여지가 있습니다. 난 synchornized 블록의 액세스를 얻을 것이다 만 번째 스레드 우선 동기 블록을 실행할 출력을 같은 하나의 스레드 만이 기대되었다스레드 : 동기화 된 블록
Inside run=>thread 2
Inside run=>thread 1
Inside run=>thread 1
Inside run=>thread 2
Inside run=>thread 2
Inside run=>thread 1
Inside run=>thread 2
Inside run=>thread 1
Inside run=>thread 1
Inside run=>thread 2
로 : 아래의 코드를 실행 한 후 전 출력 geeting 해요. 개념을 잘못 이해했을 수 있습니까?
package com.blt;
public class ThreadExample implements Runnable {
public static void main(String args[])
{
System.out.println("A");
Thread T=new Thread(new ThreadExample());
Thread T1=new Thread(new ThreadExample());
System.out.println("B");
T.setName("thread 1");
T1.setName("thread 2");
System.out.println("C");
T.start();
System.out.println("D");
T1.start();
}
synchronized public void run()
{
for(int i=0; i<5; i++)
{
try
{
System.out.println("Inside run=>"+Thread.currentThread().getName());
Thread.currentThread().sleep(2000);
}
catch(InterruptedException e)
{
e.printStackTrace();
}
}
}
}
하나의 ThreadExample 인스턴스를 생성하고 동일한 인스턴스를 스레드 T의 생성자와 스레드 T1에 모두 전달하십시오. 이는 사람들이 이미 제공 한 답변에서 설명한 이유 때문입니다. – Alderath