Java线程封闭

作者: 依弗布德甘 | 来源:发表于2019-12-29 22:00 被阅读0次

线程封闭

  • 多线程中不需要使用共享数据,使用数据封闭避免使用同步的技术
  • 线程封闭的具体实现:ThreadLocal、局部变量
ThreadLocal

它是一个线程级别的变量,每个线程都有拥有自己独立的变量,与其他线程互不影响。

用法:ThreadLocal<T> var = new ThreadLocal<T>();
会自动在每一个线程上创建一个T的副本,副本之间彼此独立,互不影响

package com.study.hc.thread.chapter1.thread;

/** 线程封闭示例 */
public class Demo7 {
    /** threadLocal变量,每个线程都有一个副本,互不干扰 */
    public static ThreadLocal<String> value = new ThreadLocal<>();

    /**
     * threadlocal测试
     * 
     * @throws Exception
     */
    public void threadLocalTest() throws Exception {

        // threadlocal线程封闭示例
        value.set("这是主线程设置的123"); // 主线程设置值
        String v = value.get();
        System.out.println("线程1执行之前,主线程取到的值:" + v);

        new Thread(new Runnable() {
            @Override
            public void run() {
                String v = value.get();
                System.out.println("线程1取到的值:" + v);
                // 设置 threadLocal
                value.set("这是线程1设置的456");

                v = value.get();
                System.out.println("重新设置之后,线程1取到的值:" + v);
                System.out.println("线程1执行结束");
            }
        }).start();

        Thread.sleep(5000L); // 等待所有线程执行结束

        v = value.get();
        System.out.println("线程1执行之后,主线程取到的值:" + v);

    }

    public static void main(String[] args) throws Exception {
        new Demo7().threadLocalTest();
    }
}


栈封闭 - 局部变量

局部变量的固有数据之一就是封闭在线程中,它们位于执行线程的栈中,其他线程无法放到这个栈。

相关文章

  • Java线程封闭

    线程封闭 多线程中不需要使用共享数据,使用数据封闭避免使用同步的技术 线程封闭的具体实现:ThreadLocal、...

  • java 线程封闭

    多线程访问共享可变数据的时候,会涉及到同步问题,但是有时候我们不需要数据共享,这时候线程封闭就被提出来了。 在ja...

  • Java多线程 - 线程封闭

    一. 线程封闭 1. 概念 多线程访问共享可变数据时,涉及到线程间数据同步的问题。并不是所有时候,都要用到共享数据...

  • 2020-02-02 3.1 线程封闭

    本文是Java线程安全和并发编程知识总结的一部分。 3.1 线程封闭 线程封闭的意思是: 只在线程内共享数据,不在...

  • Java并发-线程封闭

    读者们好! 在这篇博客中,我们将探讨线程封闭是什么意思,以及我们如何实现它。 所以,让我们直接开始吧。 1. 线程...

  • Java Concurrent 线程封闭

    前言 并发能够帮助我们完成资源的高效利用,业务逻辑的解耦。但是同时并发也带来了一些问题,比如说数据的并发安全问题。...

  • java并发之线程封闭

      JVM运行时数据区分为线程共享部分、线程独占部分。多线程程访问共享可变数据时,涉及到线程间数据同步的问题。但并...

  • 第一章

    Java并发编程与高并发解决方案知识点:线程安全;线程封闭;线程调度;同步容器;并发容器;AQS;J.UC 高并发...

  • Android 多线程

    Android 多线程实际上就是java SE 中的多线程,为了方便使用,封闭了一些类,如:AsyncTask,H...

  • [Java多线程编程之六] 线程封闭

    一、什么是线程封闭?   多线程访问共享可变数据时,线程间执行顺序的不同可能导致程序运行结果的不同,即线程安全问题...

网友评论

    本文标题:Java线程封闭

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