Java多线程中常见面试题
原创
©著作权归作者所有:来自51CTO博客作者ONESTAR一颗星的原创作品,请联系作者获取转载授权,否则将追究法律责任
1、多线程有几种实现方案,分别是哪几种?
- 继承 Thread 类
- 实现 Runnable 接口
- 通过线程池,实现 Callable 接口
2、同步有几种方式,分别是什么,并分别说出其同步锁对象?
- 同步代码块 ==> 同步锁对象为:任意对象
- 同步方法 ==> 同步锁对象为:this
静态同步方法 ==> 同步锁对象为:本类名.class
3、启动一个线程时 run() 还是 star() , 说说他们的区别?
- star():用来启动线程,并调用线程中的 run() 方法
- run():执行该线程对象要执行的任务
4、sleep() 和 wait() 方法的区别?
- sleep():不释放锁对象,释放 CPU 使用权,在休眠的时间内不能唤醒
- wait():释放锁对象,释放 CPU 使用权,在等待时间内,能唤醒
5、为什么 wait()、notify()、notifyAll() 等方法都定义在 Object 类中
- 因为这些方法在使用的时候要注明所属的锁,而锁又是任意对象,所以这些方法是定义在 Object 类中的