线程面试题

1,线程与进程有什么区别?
线程是进程的子集,一个进程可以有多个线程,每个线程都有独立的栈空间,多个线程共用一片堆空间
2,如何在java中实现线程?
继承Thread类 重写run方法 run方法就是线程体,使用该类对象的start()启动线程
实现Runnable 创建一个实现Runnable接口的类,重写run(),方法创建一个Runable接口的实现类的对象,创建一个Thread类的+对象,将Runnable接口实现类的对象当做构造器参数传入,start()启动线程
callable接口的call方法支持抛出异常也支持返回值(Future),这也是与Runnable接口的不同其余与Runnable相同
3,什么是线程安全?Vector是一个线程安全类吗?
线程安全:当一个进程里多个线程同时运行,多个线程的共享数据可能出现问题,Vector是一个线程安全的类,ArrayList线程不安全
4,当线程运行时发生异常会怎样?
如果这个异常没有被捕获,那么将会停止执行,线程结束。
5,notify和notifyAll区别?
notify唤醒等待队列的下一个线程,notifyAll唤醒等待队列里的所有线程
6,wait notify notifyAll为什么在Object类中,不在Thread中?
java提供的锁是对象级别的不是线程级别的所以这三个方法都在Object类中。wait是让当前线程加入到该对象的阻塞队列中,notify是唤醒该对象阻塞队列中的线程
7,Threadlocal?
每一个线程都有独有的一个ThreadLocal解决了线程安全问题,但是这是用高昂的代价获得的线程安全
8,什么是线程池,为什么可以使用它?
创建线程要花费昂贵的资源,而且一个进程可以创建的线程也有限,
9,如何解决生产者消费者问题?
用wait和notify和同步锁,只要有就去买,只要小于固定量就生产。也意味着没有就不买,等于固定量就不生产,if else.
10,死锁?
两个以上的线程运行时争夺资源,都需要其他方手上的资源,同时自己也必须运行完成才会释放自己手中的资源,避免死锁要避免锁的嵌套。
11,怎么检测一个线程是否拥有锁?
Thread类里面有一个方法holdsLock(Object obj) 返回true表示拥有obj这个锁。
12,yield()方法:
使当前线程释放cpu资源,
13,sleep与wait方法的区别?
sleep会释放cpu资源让当前线程停止执行但不会释放锁


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值