1.概述
wait用于线程之间的通信,sleep用于让线程阻塞一段时间;
2.对比
1. wait 需要搭配 synchronized 使用. sleep 不需要.
2. wait 是 Object 的方法, sleep 是 Thread 的静态方法
3.单例模式
//Singleton单例,饿汉模式的单例模式的实现
//此处保证Singleton这个类只能创建出一个实例,
class Singleton {//在此处,先把这个实例给创建出来private static Singleton instance = new Singleton();
//需要使用唯一实例,统一通过Singleton.getInstance()方式来获取public static Singleton getInstance(){
return instance;
}
//为了避免Singleton不小心复制出多份来。//把构造方法设为private,在类外面,就无法通过new的方式来创建这个Singleton实例了;private Singleton() {}
}
public class ThreadDemo18 {public static void main(String[] args) {
Singleton s = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
//Singleton s3 =new Singleton();//结果为true,代码两个引用指向同一个
System.out.println(s == s2);
}
}
//懒汉单例模式
class SingletonLazy{
private static SingletonLazy instance=null;
public static SingletonLazy getInstance(){
//值为空进行加锁,不为空不加锁if(instance == null){
synchronized (SingletonLazy.class) {
if (instance == null) {
instance = new SingletonLazy();
}
}
}
return instance;
}
private SingletonLazy(){}
}
public class ThreadDemo20 {
public static void main(String[] args) {
SingletonLazy s = SingletonLazy.getInstance();
SingletonLazy s2 = SingletonLazy.getInstance();
System.out.println(s == s2);
}
}