JUC 相关问题
一、Java 如何开启线程?怎么保证线程安全?
线程和进程的区别:进程是操作系统进行资源分配的最小单元。线程是操作系统进行任务分配的最小单元,线程隶属于进程。
线程和进程切换上下文区别:
如何开启线程?1、继承 Thread 类,重写 run() 方法。
2、实现 Runnable 接口,实现 run() 方法
3、实现 Callable 接口,实现 call() 方法。通过 FutureTask 创建一个线程,获取线程执行的返 回值。
4、通过线程池来开启线程。
怎么保证线程安全?加锁:JVM 提供的锁,也就是 Synchronized 关键字。
JDK 提供的各种锁 Lock。
二、Volatile 和 Synchronized 有什么区别?Volatile 能不能保证线程安全?DCL(Double Check Lock)单例为什么要加Volatile?
public class VolatitleDemo1 {
public static volatile boolean flag = true;
public static void main(String[] args) {
new Thread(() -> {
while (flag) {
}
System.out.println("=============End of Thread1===============");
}).start();
try {
Thread.sleep(100);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
System.out.println("turn flag off");
flag = false;
}
}
更新中······