2012-04-14 1 views
0

스레드를 사용하는 Android 앱을 개발 중입니다. 이 3 가지 코드의 차이점을 알려주시겠습니까?여러 스레드의 시작 및 결합 순서가 다릅니 까?

첫째

Thread t1 = new Thread (new Class1(param1)); 
Thread t2 = new Thread (new Class2(param2)); 

t1.start(); 
t2.start(); 

t1.join(); 
t2.join(); 

둘째

Thread t1 = new Thread (new Class1(param1)); 
Thread t2 = new Thread (new Class2(param2)); 

t1.start(); 
t1.join(); 

t2.start(); 
t2.join(); 

셋째, 두 클래스 (class1class2)는 동일한 클래스를 확장하는 경우

또한
Thread t1 = new Thread (new Class1(param1)); 
t1.start(); 

Thread t2 = new Thread (new Class2(param2)); 
t2.start(); 

t1.join(); 
t2.join(); 

이 어떻게 다른 것 Class?

Class1과 Class2 두 클래스가 동일한 클래스 (MAINCLASS)를 확장하고 실행 가능을 구현하는지 알아야합니다. 충돌이 발생합니까? 다른 말로하면 작동 할 수 있습니까? 감사합니다.

+0

t1.join()이 예에서 스레드를 사용하여 다소 무의미하게 T2를 시작하기 전에 끝날 때까지

2 )는 대기 다음 명령. – barsju

+0

두 클래스가 같은 클래스를 확장하고 실행 가능을 구현하는 경우 functons 간의 충돌이 발생할 수 있습니까? – Adroidist

+0

함수 자체가 충돌하지 않습니다. 충돌은 동일한 데이터에 대한 작업 일 경우에만 발생합니다. 따라서 메소드가 작동하는 변수와 필드를 고려해야합니다. 이러한 변수 (데이터)의 인스턴스가 공유되면 잠재적 인 충돌이 발생할 수 있는지 고려해야합니다. 그들이 항상 다른 인스턴스에서 작동한다면 아무런 문제가 없을 것입니다. – barsju

답변

1

1)과 3)은 비슷합니다. 둘 다 두 개의 스레드를 시작하고 완료 될 때까지 기다립니다. T1은 T1의 스레드가 진행하기 전에 종료하는 방법은 단순히 현재 스레드를 대기하게

+0

둘 다 class1이 class2에서 사용하는 함수가 아닌 main 클래스의 함수를 사용하는 동일한 클래스를 확장하는 경우 충돌이 발생할 수 있습니까? – Adroidist

관련 문제