2012-04-14 37 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