A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

演练代码如下:
//定义了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();
        }
}
“懒汉式”与“饿汉式”的区别,在建立单例对象的时间的不同。“懒汉式”是在你真正用的时候才去建这个单例对象。实际开发中懒汉式一般用的比较少。

1 个回复

倒序浏览
“懒汉式”与“饿汉式”这不真的不错,毕老师也说过。这个面试开发都很有用。收藏了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马