[求助]sleep的问题
class TestThreadMethod extends Thread{public TestThreadMethod(String name){
super(name);
}
public synchronized void run(){
for(int i=0; i<3; i++){
System.out.print(Thread.currentThread().getName());
System.out.println(" : " + i);
try{
Thread.sleep(100);
}
catch(InterruptedException e){
System.out.println("Interrupted");
}
}
}
}
public class TestThread{
public static void main(String[] args){
TestThreadMethod t1 = new TestThreadMethod("t1");
TestThreadMethod t2 = new TestThreadMethod("t2");
t1.start();
t1.start();
//t2.start();
}
}
为什么这个会出现异常!!我已经放到synchronized块去了啊!!
----------------解决方案--------------------------------------------------------
贴一下你的异常看看
----------------解决方案--------------------------------------------------------
t1.start();
t1.start();
你掉用两次start()
----------------解决方案--------------------------------------------------------
我就是要调用他两次啊!!达到不放锁的作用!!
异常提示:
Exception in thread "main" java.lang.IllegalThreadStateException
at java.lang.Thread.start(Thread.java:571)
at thread.TestThread.main(TestThread.java:29)
按我的想法 它应该会打出
t1 : 0
t1 : 1
t1 : 2
t1 : 3
t1 : 0
t1 : 1
t1 : 2
t1 : 3
[此贴子已经被作者于2006-11-28 11:16:46编辑过]
----------------解决方案--------------------------------------------------------
不会,你应该做的不是调用两次同一个线程,而是调用两个不同的线程,让他们访问同一个对象。
----------------解决方案--------------------------------------------------------
又混了....楼上的 你直接给个例子我看看吧!!!
[此贴子已经被作者于2006-11-28 12:03:41编辑过]
----------------解决方案--------------------------------------------------------
一个线程是不能调用两次起动的
----------------解决方案--------------------------------------------------------