美文网首页
java并发编程 - 9 - ThreadlLocal 避免共享

java并发编程 - 9 - ThreadlLocal 避免共享

作者: cf6bfeab5260 | 来源:发表于2019-05-16 16:37 被阅读0次

我们说,没有共享,就没有并发问题。所以避免共享也是避免并发问题的方式。java提供了ThreadLocal类。
ThreadLocal用于保存某个线程共享变量:对于同一个static ThreadLocal,不同线程只能从中get,set,remove自己的变量,而不会影响其他线程的变量。

private Integer val=0;


    @Test
    public  void test1() throws InterruptedException {
        //共享变量,互相影响
        Thread t1=new Thread(()->{
            for(Integer i=0;i<10;i++){
                val++;
                log.info(val.toString());

            }
        });

        Thread t2=new Thread(()->{
            for(Integer i=0;i<10;i++){
                val++;
                log.info(val.toString());
            }
        });

        t1.start();
        t2.start();
        t1.join();
        t2.join();
    }



    private ThreadLocal<Integer> value=ThreadLocal.withInitial(()->{
        return 0;
    });

    @Test
    public  void test() throws InterruptedException {
        //threadlocal 互不影响
        Thread t1=new Thread(()->{
            for(Integer i=0;i<10;i++){
                value.set(value.get()+1);
                log.info(value.get().toString());

            }
        });

        Thread t2=new Thread(()->{
            for(Integer i=0;i<10;i++){
                value.set(value.get()+1);
                log.info(value.get().toString());
            }
        });

        t1.start();
        t2.start();
        t1.join();
        t2.join();
    }

相关文章

网友评论

      本文标题:java并发编程 - 9 - ThreadlLocal 避免共享

      本文链接:https://www.haomeiwen.com/subject/gwbiaqtx.html