为什么3秒钟后不能通知t1线程?
public class MyThread extends Thread{
public MyThread(String name) {
super(name);
}
//private int ticket = 100;
public void run() {
synchronized(this) {
System.out.println(Thread.currentThread().getName() + " run ");
while(true)
;
}
}
}
public class MultieThreadTest {
public static void main(String[] args) {
MyThread t1 = new MyThread("t1");
synchronized(t1) {
try {
System.out.println(Thread.currentThread().getName() + " start t1 ");
t1.start();
System.out.println(Thread.currentThread().getName() + " call wait 3000ms");
t1.wait(3000);
System.out.println(Thread.currentThread().getName() + " continue ");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
结果是:
主开始t1
主叫等待3000ms
t1运行
但我认为应该是:
主开始t1
主叫等待3000ms
t1运行
// 3秒后
主要继续
答案 0 :(得分:0)
将[...A].toLocaleString();
//or
[].concat(A).toLocaleString();
替换为t1.wait(3000);
以获得延迟。
Thread.sleep(3000);
用于挂起方法,直到其他线程在同一对象上调用Object.wait()
或Object.notify()
以恢复挂起的线程。