面试系列-并发编程72道面试题及答案

96
Java邵先生
2019.01.29 22:11 字数 1247

话不多说直接上题,篇幅限制,文末有答案

1.Java中守护线程和本地线程区别

2.线程与进程的区别

3.什么是多线程中的上下文切换

4.死锁与活锁的区别,死锁与饥饿的区别

5.Java中用到的线程调度算法是什么

6.什么是线程组,为什么在Java中不推荐使用

7.为什么使用Executor框架

8.在Java中Executor和Executors的区别

9.什么是原子操作,在Java Concurrency API中有哪些原子类(atomic classes)

10.Java Concurrency API中的Lock接口(Lock interface)是什么,对比同步它有什么优势

Lock接口比同步方法和同步块提供了更具扩展性的锁操作。

11.什么是Executors框架

12.什么是阻塞队列,阻塞队列的实现原理是什么,如何使用阻塞队列来实现生产者-消费者模型

13.什么是Callable和Future

14.什么是FutureTask,使用ExecutorService启动任务

15.什么是并发容器的实现

16.多线程同步和互斥有几种实现方法,都是什么

17.什么是竞争条件?你怎样发现和解决竞争

18.如何使用thread dump,如何分析Thread dump

19.为什么我们调用start()方法时会执行run()方法,为什么我们不能直接调用run()方法

20.Java中你怎样唤醒一个阻塞的线程

21.在Java中CycliBarriar和CountdownLatch有什么区别

22.什么是不可变对象,它对写并发应用有什么帮助

23.Java中用到的线程调度算法是什么

24.什么是线程组,为什么在Java中不推荐使用

25.为什么使用Executor框架比使用应用创建和管理线程好

26.Java中有几种方法可以实现一个线程

27.如何停止一个正在运行的线程

28.notify()和notifyAll()有什么区别

29.什么是Daemon线程,它有什么意义

30.Java如何实现多线程之间的通讯和协作

31.什么是可重入锁(ReentrantLock)

32.当一个线程进入某个对象的一个synchronized的实例方法后,其它线程是否可进入此对象的其它方法

33.乐观锁和悲观锁的理解及如何实现,有哪些实现方式

34.SynchronizedMap和ConcurrentHashMap有什么区别

35.CopyOnWriteArrayList可以用于什么应用场景

36.什么叫线程安全,servlet是线程安全吗

37.volatile有什么用,能否用一句话说明下volatile的应用场景

38.为什么代码会重排序

39.在java中wait和sleep方法的不同

40.一个线程运行时发生异常会怎样

41.如何在两个线程间共享数据

42.Java中notify 和 notifyAll有什么区别

43.为什么wait, notify 和 notifyAll这些方法不在thread类里面

44.什么是ThreadLocal变量

45.Java中interrupted 和 isInterrupted方法的区别

46.为什么wait和notify方法要在同步块中调用

47.为什么你应该在循环中检查等待条件

48.Java中的同步集合与并发集合有什么区别

49.什么是线程池,为什么要使用它

50.怎么检测一个线程是否拥有锁

51.你如何在Java中获取线程堆栈

52.JVM中哪个参数是用来控制线程的栈堆栈小的

53.Thread类中的yield方法有什么作用

54.Java中ConcurrentHashMap的并发度是什么

55.Java中Semaphore是什么

56.Java线程池中submit() 和 execute()方法有什么区别

57.什么是阻塞式方法

58.Java中的ReadWriteLock是什么

59.volatile 变量和 atomic 变量有什么不同

60.可以直接调用Thread类的run ()方法么

61.如何让正在运行的线程暂停一段时间

62.你对线程优先级的理解是什么

63.什么是线程调度器(Thread Scheduler)和时间分片(Time Slicing )

64.你如何确保main()方法所在的线程是Java 程序最后结束的线程

65.线程之间是如何通信的

66.为什么线程通信的方法wait(), notify()和notifyAll()被定义在Object 类里

67.为什么wait(), notify()和notifyAll ()必须在同步方法或者同步块中被调用

68.为什么Thread类的sleep()和yield ()方法是静态的

69.如何确保线程安全

70.同步方法和同步块,哪个是更好的选择

71.如何创建守护线程

72.什么是Java Timer 类,如何创建一个有特定时间间隔的任务

答案获取方式

加群即可获取 群号:923116658

点击链接加入群聊【Java架构解析】:https://jq.qq.com/?_wv=1027&k=5e1QsXb

群内还有更多Java学习资料,PDF电子书籍,相关学习视频!

日记本
Web note ad 1