2012-04-14 38 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(); 

三:

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

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

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

而且,它怎麼會是不同的,如果這兩個類(class1class2)延長同一類Class

我仍然需要知道Class1和Class2是否擴展相同的類(MAINCLASS)並實現可運行,是否會發生衝突?換句話說它可以工作嗎? 謝謝。

+0

的t1.join()方法只是使您的當前線程等待T1線與繼續之前結束有些無意義前完成下一條指令。 – barsju 2012-04-14 15:34:14

+0

如果兩個類擴展相同的類並實現可運行,functon之間的衝突是否會發生? – Adroidist 2012-04-14 16:42:56

+0

函數不會與它們自我衝突。衝突只會在相同數據的工作中出現。所以你必須考慮方法正在處理的變量和字段。如果共享這些變量(數據)的實例,則必須考慮是否可能出現潛在的衝突。如果他們一直在不同的實例上工作,那麼不會有任何問題。 – barsju 2012-04-14 17:52:04

回答

1

1)和3)類似:它們都啓動2個線程並等待它們完成。

2)將等待T1到T2開始使它使用本示例中的線程

+0

如果它們都擴展相同的類,而類1使用的是除class2使用的函數以外的主類中的函數,那麼是否會產生衝突? – Adroidist 2012-04-14 15:36:21