您当前的位置: 首页 >  Java

小志的博客

暂无认证

  • 0浏览

    0关注

    1217博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

java设计模式——ThreadLocal线程单例

小志的博客 发布时间:2020-06-05 14:14:54 ,浏览量:0

1、定义一个ThreadLocal线程单例,代码如下:

package com.rf.designPatterns.singleton.threadLocalSingleton;

/**
 * @description: ThreadLocal线程单例,为每一个线程提供一个对象,在访问的时候相互不影响
 * @author: xiaozhi
 * @create: 2020-06-05 13:52
 */
public class ThreadLocalSingleton {

    //创建ThreadLocal实例对象,并且重写initialValue方法
    private static final ThreadLocal  threadLocalSingleton =
            new ThreadLocal(){
        @Override
        protected ThreadLocalSingleton initialValue() {
            return new ThreadLocalSingleton();
        }
    };

    //构造方法
    private ThreadLocalSingleton(){

    }

    //提供对外暴露的方法,获取ThreadLocalSingleton对象
    public static ThreadLocalSingleton getInstance(){
        return threadLocalSingleton.get();
    }
}

2、定义一个多线程类,代码如下:

package com.rf.designPatterns.singleton.threadLocalSingleton;

/**
 * @description:
 * @author: xiaozhi
 * @create: 2020-06-05 14:01
 */
public class MyThread implements Runnable{

    @Override
    public void run() {
        ThreadLocalSingleton instance = ThreadLocalSingleton.getInstance();
        System.out.println(Thread.currentThread().getName()+":"+instance);
    }
}

3、定义一个测试类,代码如下:

package com.rf.designPatterns.singleton.threadLocalSingleton;

/**
 * @description:
 * @author: xiaozhi
 * @create: 2020-06-05 14:02
 */
public class ThreadLocalSingletonTest {
    public static void main(String[] args) {
        System.out.println("main thread :"+ThreadLocalSingleton.getInstance());
        System.out.println("main thread :"+ThreadLocalSingleton.getInstance());
        System.out.println("main thread :"+ThreadLocalSingleton.getInstance());

        Thread thread1 = new Thread(new MyThread());
        Thread thread2= new Thread(new MyThread());
        thread1.start();
        thread2.start();
    }
}

4、输出结果,如下图: 在这里插入图片描述

关注
打赏
1661269038
查看更多评论
立即登录/注册

微信扫码登录

0.0432s