文章目录
-
- 一、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 的原理?
四、反射部分
链接地址
五、对象拷贝部分
链接地址