1.线程安全的单例模式
//饿汉式 线程安全的
class danlie1 {
private danlie1(){}
private static danlie1 d=new danlie1();
public static danlie1 get(){
return d;
}
}
//懒汉式 线程不安全
class Single {
private Single(){}
private static Single d=null;
public static Single get(){
if(d==null) d=new Single();
return d;
}
}
class Single2 {
private Single2(){}
private volatile static Single2 d;
public static Single2 get(){
if(d==null){
synchronized (Single2.class){
if(d==null){
d=new Single2();
}
}
}
return d;
}
}
class Sing3{
private Sing3(){}
private static class rrr{
private static Sing3 sa=new Sing3();
}
public static Sing3 get(){
return rrr.sa;
}
}
enum ddd{
Instance;
}
2.循环打印ABC
public static void main(String[] args) {
ExecutorService executorService = Executors.newSingleThreadExecutor();
Runnable a = new Runnable() {
@Override
public void run() {
System.out.println("A");
executorService.execute(this::run);
}
};
Runnable b = new Runnable() {
@Override
public void run() {
System.out.println("B");
executorService.execute(this::run);
}
};
Runnable c = new Runnable() {
@Override
public void run() {
System.out.println("C");
executorService.execute(this::run);
}
};
executorService.execute(a);
executorService.execute(b);
executorService.execute(c);
}