等待池:假设线程A调用了某个对象的wait()方法,线程A就会释放该对象的锁,并进入该对象的等待池,等待池中的线程不会去竞争该对象的锁。 锁池:只有获取了对象的锁,线程才能执行对象的 synchronized 代码,对象的锁每次只有一个线程可以获得,其他线程只能在锁池中等待 9.线程的 run() 和 start() 有什么区别? 调用start
15个顶级java多线程面试题及答案 单项选择题(每题2分,共10题) 1. Java中线程创建方式不包括? A.继承Thread类 B.实现Runnable接口 C.实现Serializable接口 答案:C 2.哪个方法用于启动线程? A. run() B. start() C. begin() 答案:B 3.线程进入阻塞状态不能通过? A. sleep() B. yield() C. notify...
只有一个线程获取到的标志就是在monitor中设置成功了Owner,一个monitor中只能有一个Owner在上锁的过程中,如果有其他线程也来抢锁,则进入EntryList 进行阻塞,当获得锁的线程执行完了,释放了锁,就会唤醒EntryList 中等待的线程竞争锁,竞争的时候是非公平的。 8、关于synchronized 的锁升级的情况了解吗? Java中的synchron...
9.下列哪些是Java中实现线程通信的方法? A.使用wait()和notify() B.使用join() C.使用CountDownLatch D.使用CyclicBarrier 答案:ABCD 10.下列哪些是Java中线程安全的做法? A.使用synchronized关键字 B.使用volatile关键字 C.使用ThreadLocal D.使用非线程安全的集合类 答案:ABC 三、判断题(每题2分,共10题) ...
在Java开发中,多线程编程是一个非常重要的技能,也是面试中的常见考点。本文将围绕一些经典的多线程面试题展开,从基础概念到高级应用,帮助你深入理解Java多线程的核心原理与实践。 1. 多线程的基本概念 什么是线程?线程与进程有什么区别? 线程是CPU调度的最小单位,而进程是操作系统资源分配的最小单位。一个进程可以...
java多线程并发面试题及答案 单项选择题(每题2分,共10题)1.启动一个线程调用的方法是()A. run B. start C. begin D. execute 答案:B 2.线程在生命周期中要经历5种状态,新建状态、就绪状态、运行状态、阻塞状态和()A.休眠状态B.死亡状态C.挂起状态D.终止状态 答案:B 3.以下哪个类是Java中线程...
sleep与wait最主要的区别在于,sleep与wait都可以使线程等待,但sleep不会释放资源而wait会释放资源。 还有就是,wait方法只能在同步块或者同步方法中执行。 8、多线程同步有哪几种方法? 1.同步方法 代码如:publicsynchronizedvoidsave(){} 2.同步代码块
问:线程池的抛弃策略有哪些? 问:线程池如何创建?如何管理? 问:线程池队列满了,会发生什么? 问:什么是死锁?如何防止死锁? 问:原子性、可见性、有序性,如何理解? 问:java的内存模型? 问:volatile的作用?原理? 问:synchronized的原理? 问:synchronized关键字修饰方法和修饰代码,有什么区别? 问:synchronized与Reent...
Wait通常被用于线程间交互,sleep通常被用于暂停执行。 4)用Java实现阻塞队列。 这是一个相对艰难的多线程面试问题,它能达到很多的目的。第一,它可以检测侯选者是否能实际的用Java线程写程序;第二,可以检测侯选者对并发场景的理解,并且你可以根据这个问很多问题。如果他用wait()和notify()方法来实现阻塞队列,你可以...