面试必备:《Java 最常见 200+ 面试题全解析》(三)多线程部分(未完)

文章目录

    • 一、Java基础部分
    • 二、容器部分
    • 三、多线程部分
          • 35.并行和并发有什么区别?
          • 36.线程和进程的区别?
          • 37.守护线程是什么?
          • 38.创建线程有哪几种方式?
          • 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 的原理?
    • 四、反射部分
    • 五、对象拷贝部分

一、Java基础部分

链接地址

二、容器部分

链接地址

三、多线程部分

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

并行表示两件事同时都在做,
并发表示两件事在某个时刻只有一个事情在做.

36.线程和进程的区别?

链接地址

37.守护线程是什么?

守护线程(即daemon thread),是个服务线程,准确地来说就是服务其他的线程,这是它的作用——而其他的线程只有一种,那就是用户线程。所以java里线程分2种,
1、守护线程,比如垃圾回收线程,就是最典型的守护线程。
2、用户线程,就是应用程序里的自定义线程。

守护线程
1、守护线程,专门用于服务其他的线程,如果其他的线程(即用户自定义线程)都执行完毕,连main线程也执行完毕,那么jvm就会退出(即停止运行)——此时,连jvm都停止运行了,守护线程当然也就停止执行了。

2、再换一种说法,如果有用户自定义线程存在的话,jvm就不会退出——此时,守护线程也不能退出,也就是它还要运行,干嘛呢,就是为了执行垃圾回收的任务啊。

用户自定义线程
1、应用程序里的线程,一般都是用户自定义线程。
2、用户也可以在应用程序代码自定义守护线程,只需要调用Thread类的设置方法设置一下即可。

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

链接地址

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 的原理?

四、反射部分

链接地址

五、对象拷贝部分

链接地址

你可能感兴趣的:(Java面试题)