1、sleep和wait的区别
sleep是Thread类的方法、wait是Object类中定义的方法
sleep方法可以在任何地方使用
wait方法只能在synchronized方法或synchronized块中使用
Thread.sleep只会让出CPU,不会导致锁行为的改变
Object.wait不仅让出CPU,还会释放已经占有的同步资源
2、如何给run方法传参
构造函数传参
成员变量传参
回调函数传参
3、如何实现处理线程的返回值
主线程等待发,如while死循环等等线程结束
使用Thread类中的join阻塞当前线程以等待子线程处理完毕
通过Callable接口实现:通过FutureTask或线程池获取,该对象的isDone可判断是否执行完,get方法可精准的等待call方法执行完再返回值。
4、Thread和Runnable的区别
Thread是实现了Runnable接口的类,使得run支持多线程
因类的单一继承原则,推荐多使用Runable接口
5、Thread中的start和run方法的区别
调用start方法会创建一个新的子线程并启动
run方法只是Thread的一个普通方法的调用
6、notify和notifyAll的区别
notifyAll会让所有处于等待池的线程全部进入到锁池去竞争获取锁的机会
notify只会随机选取一个处于等待池中的线程进入锁池去竞争获取锁的机会
网友评论