当前位置: 代码迷 >> Java相关 >> [求助]学习线程时的一个困惑,new Thread(Runnable r)
  详细解决方案

[求助]学习线程时的一个困惑,new Thread(Runnable r)

热度:647   发布时间:2006-05-21 20:57:00.0
[求助]学习线程时的一个困惑,new Thread(Runnable r)

class Think implements Runnable {
public void run(){
for(int i = 0;i<2000;i++) {
String s = Thread.currentThread().getName();
System.out.println(s + " : " + i);
}
}
}

public class ThinkThread {

public static void main(String[] args) {
Think t1= new Think();

Thread th1 = new Thread(t1);//-----块1
Thread th2 = new Thread(t1);//-----块1

/*---块2
Think t1= new Think();
Think t2= new Think();

Thread th1 = new Thread(t1);
Thread th2 = new Thread(t2);
*/

th1.start();
th2.start();
}
}


在学习线程时的一个困惑:就是上面块1和块2的两种创建两个线程th1,th2的这两种写法有什么不同?想不出这块1创建的th1,th2之间是什么关系,块2创建的th1,th2之间又是什么关系.只听人说块1会起到一个共享数据的作用,不过还是想不通.共享哪里的数据了?还是块2跟块1没什么区别,只是块1比块2少创建了一个Think对象?
想了好多天了,一直想不出个道道来,请大家能够帮帮我,最好说的详细点,小弟在这谢了!!!

另外还有就是这两个线程th1,th2和主线程这间是什么关系.

搜索更多相关的解决方案: Thread  new  Runnable  线程  Think  

----------------解决方案--------------------------------------------------------

块一当然会共享共数,因为块一你是用一个Runnable的对象构建的.当你产生了一个Runnable的对象t1的时候,后面的两个线程都是以同一个对象来构建的.如果你这个Runnable对象有什么成员的话,那么成员就会被所有的线程 一起共享


----------------解决方案--------------------------------------------------------
  相关解决方案