java并发和多线程面试题(二)
50. 什么是线程安全的内部类?如何使用它实现线程安全的单例模式?
回答: 线程安全的内部类是指
在类的内部定义一个私有静态内部类,该内部类持有一个外部类的实例,并在静态初始化时创建实例。这样可以保证懒加载的同时实现线程安全。
代码示例:
public class Singleton {
private Singleton() {}
private static class Holder {
private static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return Holder.INSTANCE;
}
}
51. 什么是工作窃取算法(Work Stealing Algorithm)?
回答: 工作窃取算法是一种用于任务调度的算法,通常在基于任务的并行编程中使用。它允许空闲线程从其他线程的任务队列中窃取任务来执行,以充分利用多核处理器。
52. 什么是ThreadLocalRandom?如何使用它生成随机数?
回答: ThreadLocalRandom是Java 7引入的一个类,用于在多线程环境下生成随机数,它比Random类更适合高并发环境。
代码示例:
import java.util.concurrent.ThreadLocalRandom;
public class RandomExample {
public static void main(String[] args) {
ThreadLocalRandom random = ThreadLocalRandom.current();
int randomNumber = random.nextInt(1, 101); // 生成1到100的随机整数
System.out.println(randomNumber);
}
}