美文网首页
ThreadLocal知识详解

ThreadLocal知识详解

作者: 楼兰King | 来源:发表于2020-10-09 13:56 被阅读0次

线程局部变量

Java中用hashtable实现

image

<figcaption></figcaption>

image

<figcaption></figcaption>

ThreadLocal<T>
initialValue
set
get
remove
复制代码
image

<figcaption></figcaption>

image

<figcaption></figcaption>

image

<figcaption></figcaption>

image

<figcaption></figcaption>

并发测试

ab -n 10000 -c 100 url

Java

synchronized 排队,解决线程安全问题 排队操作很危险,可能导致队列崩了,大大减少了吞吐量 用ThreadLocal很快,但是要考虑数据收集的问题

一个例子

package com.example.demo;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashSet;

@RestController
public class StatController {
    static HashSet<Val<Integer>> set = new HashSet<>();

    static synchronized void addSet(Val<Integer> v) {
        set.add(v);
    }

    static ThreadLocal<Val<Integer>> c = new ThreadLocal<>() {
        @Override
        protected Val<Integer> initialValue() {
            Val<Integer> v = new Val<>();
            v.set(0);
            addSet(v);
            return v;
        }
    };
    void __add() {
        Val<Integer> v = c.get();
        v.set(v.get()+1);
    }
    @RequestMapping("/")
    public Integer get() {
        return set.stream().map(x -> x.get()).reduce((a,b) -> a+b).get();
    }
    @RequestMapping("/add")
    public Integer add() {
        __add();
        return 1;
    }
}

复制代码
image

相关文章

  • ThreadLocal知识详解

    线程局部变量 Java中用hashtable实现 并发测试 ab -n 10000 -c 100 url Java...

  • ThreadLocal和InheritableThreadLoc

    ThreadLocal详解 - 简书 InheritableThreadLocal详解 - 简书 ThreadLo...

  • InheritableThreadLocal详解

    1、简介 在上一篇 ThreadLocal详解 中,我们详细介绍了ThreadLocal原理及设计,从源码层面上分...

  • ThreadLocal 详解

    ThreadLocal 详解 1. 前言 ThreadLocal是java线程中的局部变量,变量作用域仅在当前线程...

  • ThreadLocal详解

    1、简介 ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Th...

  • ThreadLocal详解

    ThreadLocal之前我认为就是内部维护了一个ThreadLocalMap其中key为当前线程(Thread....

  • ThreadLocal详解

    介绍 顾名思义这个类提供线程局部变量每个线程(通过其get或set方法)都有自己独立初始化的变量副本 Thread...

  • ThreadLocal 详解

    ThreadLocal,我们一般称之为线程的局部变量,或者是线程的本地变量。很多人认为他与多线程的同步机制相关,其...

  • ThreadLocal详解

    ThreadLocal在java.lang包中,其主要作用是提供一个和线程绑定的变量环境,即通过ThreadLoc...

  • ThreadLocal详解

    ThreadLocal说明 ThreadLocal是一个线程内部的数据存储类,使用它来保存数据,只有当前的线程才可...

网友评论

      本文标题:ThreadLocal知识详解

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