"this"는 현재 클래스의 멤버를 나타내는 데 사용됩니다. 나는 멀티 쓰레딩을 사용하는 자바 프로그램을 시도하고 있었다."this"를 Thread 생성자에 전달하는 이유는 무엇입니까?
가 참조되는 현재의 클래스 => 객체
프로그램 수행이 스레드() 생성자 무엇
class Thread_child implements Runnable{
Thread t;
Thread_child()
{
t = new Thread(this,"DemoThread");
System.out.println("ChildThread:"+t);
t.start();
}
public void run(){
char a[] = {'A','B','C','D','E','F','G','H','I','J'};
try{
for(int i=0;i<10;i++){
System.out.println("ChildThread:"+i+"\t char :"+a[i]);
Thread.sleep(5000);
}
}
catch(InterruptedException e){
System.out.println("ChildThread Interrupted");
}
System.out.println("Exiting from the Child Thread!");
}
}
class Thread_eg{
public static void main(String args[]){
new Thread_child();
try{
for(int i=1;i<=10;i++){
System.out.println("MainThread:"+i);
Thread.sleep(3000);
}
}
catch(InterruptedException e){
System.out.println("MainThread Interrupted");
}
System.out.println("Exiting from the Main Thread!");
}
}
이다. 왜 우리는 매개 변수로 'this'를 전달해야할까요? 매개 변수를주지 않고 실행하려고했지만 하위 스레드는 실행되지 않았습니다. 주 스레드 만 인쇄되었습니다. 스레드 생성자를 매개 변수로 바꾼 경우 자식 스레드가 실행되었습니다. 왜 이렇게이다?
이 http://docs.oracle.com/javase/6/docs/api/java/lang/Thread.html –
그것은 변경되지 않았습니다 :
는이 같은 스레드의
run
는 모습입니다 , 그러나 나는 6을 연결했다. –완전히 별개의 문제로서, 일관된 들여 쓰기와 포맷을 사용하여 코드가 사람에 의해 더 많이 읽을 수있게 만들었 기 때문이다. 2 개의 닫는 중괄호를 서로 직접 아래에 배치하는 것은 나쁜 신호이며'Thread_eg'에서'main' 메쏘드가 중간에 끝나는 것처럼 보입니다. –