题目大致如下:
问:
1.输出是什么样的,为什么?
2.若要按start step1 step2 step3 end的顺序输出,应该如何修改
第一问不多说了
第二话答的时候只是狂扯了一通多线程的锁机制,具体实现没考虑,回来翻了下synchronized和notify、wait之类的用法之后,补充了一下修改的代码,如下:
代码质量比较水,还望轻拍。。。
public class ThreadTest {
public static void main(String[] args) {
System.out.println("start");
new Thread(new Runnable(){
public void run(){
System.out.println("step2");
}
}).start();
System.out.println("step1");
new Thread(new Runnable(){
public void run() {
System.out.println("step3");
}
}).start();
System.out.println("end");
}
}
问:
1.输出是什么样的,为什么?
2.若要按start step1 step2 step3 end的顺序输出,应该如何修改
第一问不多说了
第二话答的时候只是狂扯了一通多线程的锁机制,具体实现没考虑,回来翻了下synchronized和notify、wait之类的用法之后,补充了一下修改的代码,如下:
public class ThreadTest {
public static void main(String[] args) throws InterruptedException {
final Object lock = new Object();
synchronized(lock){
System.out.println("start");
new Thread(new Runnable(){
public void run(){
synchronized(lock){
System.out.println("step2");
lock.notify();
}
}
}).start();
System.out.println("step1");
lock.wait();
new Thread(new Runnable(){
public void run() {
synchronized(lock){
System.out.println("step3");
lock.notify();
}
}
}).start();
lock.wait();
System.out.println("end");
}
}
}
代码质量比较水,还望轻拍。。。