10 多线程的面试题

public class WorkerA implements Runnable{

public void run(){

System.out.println(Thread-A start);

Thread b = new Thread(new WorkerB());

b.start();

try{

b.join();

}catch(InterruptedException e){

e.printStackTrace();

}

System.out.println(Thread-A finished)

}

public static void main(String[]args){

new Thread(new WorkerA()).start();

}

}

public class WorkerB implements Runnable{

public void run(){

System.out.println(Thread-B start);

try{

Thread.sleep();

}catch(InterruptedException e){

e.printStackTrace();

}

System.out.println(Thread-B finished);

}


}

请先 登录 后评论

2 个回答

戚开开

首先睡眠sleep()是没有空参的方法的,这里是不对的;然后这里是先执行main主线程,然后A线程,首先会执行输出打印Thread-A start,然后紧接着join()方法是让当前线程即A线程等待B线程执行完毕之后再执行,即紧接着执行B线程,执行输出打印Thread-B start,接着看sleep()睡眠多久了,等待相应的睡眠时间后执行输出打印Thread-B finished,最后B线程执行完毕再来执行A线程接下来的语句,即执行输出打印Thread-A finished

请先 登录 后评论
苏暖辉 - 软件工程

执行顺序

Thread-A start

Thread-B start

Thread-B finished

Thread-A finished

请先 登录 后评论
  • 1 关注
  • 0 收藏,106 浏览
  • 李文凯 提出于 2018-04-27 17:21

相似问题