演练代码如下:
//定义了Apple类实现Runnable接口
class Apple implements Runnable
{
private static Apple s = null;
private Apple(){}
private int apple=100;
//单例设计模式:懒汉式定义方法
public static Apple getInstance()
{
if(s==null)
{
//定义同步代码块,避免了多线程重复判断锁
synchronized(Apple.class)
{
if(s==null)
s = new Apple();
}
}
return s;
}
//复写run方法
public void run()
{
for(int i=1;i<=50;i++)
{
//同步代码块
synchronized(this)
{
//输出结果
System.out.println(Thread.currentThread().getName()+"吃了第"+(apple--)+"个苹果");
}
}
}
}
public class Test
{
public static void main(String[] args)
{
//创建两个引用
Apple s1=Apple.getInstance();
Apple s2=Apple.getInstance();
//开启两个线程
new Thread(s1,"张三").start();
new Thread(s2,"李四").start();
}
}
“懒汉式”与“饿汉式”的区别,在建立单例对象的时间的不同。“懒汉式”是在你真正用的时候才去建这个单例对象。实际开发中懒汉式一般用的比较少。
|
|