面试题-多线程

35.并行和并发有什么区别?

答:

  • 并发在单核和多核都可存在,就是同一时间有多个可以执行的进程。但是在单核中同一时刻只有一个进程获得CPU,虽然宏观上你认为多个进程都在进行
  • 并行是指同一时间多个进程在微观上都在真正的执行,这就只有在多核的情况下了

36.线程和进程的区别?

答:

  • 线程:是程序执行流的最小单元,是系统独立调度和分配CPU(独立运行)的基本单位
  • 进程:是资源分配的基本单位。一个进程包括多个线程

区别:

  1. 线程与资源分配无关,它属于某一个进程,并与进程内的其他线程一起共享进程的资源
  2. 每个进程都有自己一套独立的资源(数据),供其内的所有线程共享
  3. 不论是大小,开销线程要更“轻量级”
  4. 一个进程内的线程通信比进程之间的通信更快速,有效。(因为共享变量)

37.守护线程是什么?

答:

38.创建线程有哪几种方式?

答:

  • 继承Threa类创建线程
  • 实现Runnable接口创建线程
  • 通过Callable和Future创建线程

39.说一下 runnable 和 callable 有什么区别?

答:

40.线程有哪些状态?

答:创建、就绪、运行、阻塞、死亡

41.sleep() 和 wait() 有什么区别?

42.notify()和 notifyAll()有什么区别?

43.线程的 run()和 start()有什么区别?

44.创建线程池有哪几种方式?

45.线程池都有哪些状态?

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

47.在 java 程序中怎么保证多线程的运行安全?

48.多线程锁的升级原理是什么?

49.什么是死锁?

50.怎么防止死锁?

51.ThreadLocal 是什么?有哪些使用场景?

52.说一下 synchronized 底层实现原理?

53.synchronized 和 volatile 的区别是什么?

54.synchronized 和 Lock 有什么区别?

55.synchronized 和 ReentrantLock 区别是什么?

56.说一下 atomic 的原理?

猜你喜欢

转载自www.cnblogs.com/zousong/p/10513281.html