- 多线程有什么用?
- 创建线程的方式
- start方法和run方法的区别
- Runnable接口和Callable接口的区别
- CyclicBarrier和CountDownLatch的区别
- Volatile关键字的作用
- 什么是线程安全
- Java中如何获取到线程dump文件
- 一个线程如果出现了运行时异常会怎么样
- 如何在两个线程之间共享数据
- sleep方法和wait方法有什么区别
- 生产者消费者模型的作用是什么
- ThreadLocal有什么用
- 为什么wait方法和notify/notifyAll方法要在同步块中被调用
- wait方法和notify/notifyAll方法在放弃对象监视器时有什么区别
- 为什么要使用线程池
- 怎么检测一个线程是否持有对象监视器
- synchronized和ReentrantLock的区别
- ConcurrentHashMap的并发度是什么
- ReadWriteLock是什么
- FutureTask是什么
- Linux环境下如何查找哪个线程使用CPU最长
- Java编程写一个会导致死锁的程序
- 怎么唤醒一个阻塞的线程
- 不可变对象对多线程有什么帮助
- 什么是多线程的上下文切换
- 如果你提交任务时,线程池队列已满,这时会发生什么
- Java中用到的线程调度算法是什么
- Thread.sleep(0)的作用是什么
- 什么是自旋
- 什么是happens-before,即先行发生原则
- 什么是CAS
- 什么是乐观锁和悲观锁
- 什么是AQS
- 单例模式的线程安全性
- Semaphore有什么作用
- Hashtable的size方法中明明只有一条语句”return count”,为什么还要做同步?
- 线程类的构造方法、静态块是被哪个线程调用的
- 同步方法和同步块,哪个是更好的选择
- 高并发、任务执行时间短的业务怎样使用线程池?并发不高、任务执行时间长的业务怎样使用线程池?并发高、业务执行时间长的业务怎样使用线程池?