十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
创新互联是一家集网站建设,天桥企业网站建设,天桥品牌网站建设,网站定制,天桥网站建设报价,网络营销,网络优化,天桥网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域。所以,学好多线程并发编程对Java程序员来来说极其重要的。文末领取答案
下面小编整理了65道最常见的Java多线程面试题及答案,供你学习或者面试参考。
一、Thread类常用方法:
Thread MyThread = new Thread(mt,“线程名”);
//sleep()使该线程进入阻塞状态,本身不会释放锁
MyThread .sleep(millis);//毫秒数
MyThread .yield()//放弃cpu使用权利,使该线程进入就绪状态
MyThread.getState();//获得线程状态
MyThread.currentThread();//获得正在执行的线程对象MyThread
MyThread.join();//等待该线程结束,调用该线程(MyThread)的该方法(.join())的线程(比如主线程)才能继续执行
MyThread.setDaemon(on);//设置该线程为守护线程
MyThread.isDaemon();//判断是否守护线程
二、volatile和synchronized的区别
volatile本质是在告诉jvm当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取; synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。
volatile仅能使用在变量级别;synchronized则可以使用在变量、方法、和类级别的
volatile不会造成线程的阻塞;synchronized可能会造成线程的阻塞。
三、怎么唤醒一个阻塞的线程
如果线程是因为调用了wait()、sleep()或者join()方法而导致的阻塞,可以中断线程,并且通过抛出InterruptedException来唤醒它;如果线程遇到了IO阻塞,无能为力,因为IO是操作系统实现的,Java代码并没有办法直接接触到操作系统。
四、wait()、sleep()方法和notify()/notifyAll()方法在放弃对象监视器时有什么区别
sleep睡眠后不出让系统资源,wait让出系统资源其他线程可以占用CPU
sleep()方法不会释放锁
wait()方法和notify()/notifyAll()方法在放弃对象监视器的时候的区别在于:wait()方法立即释放对象监视器,notify()/notifyAll()方法则会等待线程剩余代码执行完毕才会放弃对象监视器。
五、start()方法和run()方法的区别
只有调用了start()方法,才会表现出多线程的特性,不同线程的run()方法里面的代码交替执行。如果只是调用run()方法,那么代码还是同步执行的,必须等待一个线程的run()方法里面的代码全部执行完毕之后,另外一个线程才可以执行其run()方法里面的代码。
下面的面试题答案我就不一一弄出来了,文末免费领取答案
多线程有什么用?
线程和进程的区别是什么?
Java实现线程有哪几种方式?
启动线程方法start()和run()有什么区别?
怎么终止一个线程?如何优雅地终止线程?
一个线程的生命周期有哪几种状态?它们之间如何流转的?
线程中的wait()和sleep()方法有什么区别?
多线程同步有哪几种方法?
什么是死锁?如何避免死锁?
多线程之间如何进行通信?
线程怎样拿到返回结果?
violatile关键字的作用?
新建T1、T2、T3三个线程,如何保证它们按顺序执行?
怎么控制同一时间只有3个线程运行?
为什么要使用线程池?
常用的几种线程池并讲讲其中的工作原理。
线程池启动线程submit()和execute()方法有什么不同?
CyclicBarrier和CountDownLatch的区别?
什么是活锁、饥饿、无锁、死锁?
什么是原子性、可见性、有序性?
什么是守护线程?有什么用?
怎么中断一个线程?如何保证中断业务不影响?
一个线程运行时发生异常会怎样?
什么是重入锁?
Synchronized有哪几种用法?
Fork/Join框架是干什么的?
线程数过多会造成什么异常?
说说线程安全的和不安全的集合。
什么是CAS算法?在多线程中有哪些应用。
怎么检测一个线程是否拥有锁?
Jdk中排查多线程问题用什么命令?
线程同步需要注意什么?
线程wait()方法使用有什么前提?
Fork/Join框架使用有哪些要注意的地方?
线程之间如何传递数据?
保证"可见性"有哪几种方式?
说几个常用的Lock接口实现锁。
ThreadLocal是什么?有什么应用场景?
ReadWriteLock有什么用?
FutureTask是什么?
怎么唤醒一个阻塞的线程?
不可变对象对多线程有什么帮助?
多线程上下文切换是什么意思?
Java中用到了什么线程调度算法?
Thread.sleep(0)的作用是什么?
Java内存模型是什么,哪些区域是线程共享的,哪些是不共享的
什么是乐观锁和悲观锁?
Hashtable的size()方法为什么要做同步?
同步方法和同步块,哪种更好?
什么是自旋锁?
Runnable和Thread用哪个好?
Java中notify和notifyAll有什么区别?
为什么wait/notify/notifyAll这些方法不在thread类里面?
为什么wait和notify方法要在同步块中调用?
为什么你应该在循环中检查等待条件?
Java中堆和栈有什么不同?
你如何在Java中获取线程堆栈?
如何创建线程安全的单例模式?
什么是阻塞式方法?
提交任务时线程池队列已满会时发会生什么?
总结:
今天就分享到这里,备战金九银十,高薪在等你,资料都可以免费提供给大家,我都按专题分类做成了pdf,还有很多视频资料,花了我老多老多的时间了,所以老铁们给我点个赞把(图片只是一部分)
领取方式关注我的架构师交流××× ×××就可以免费领取了哦