Java并发-13.ThreadLocal

  • 线程变量,是以ThreadLocal对象为键,任意对象为值的存储结构。该结构被附带在线程上,也就是说一个线程可以根据一个ThreadLocal对象查询到绑定到这个线程的一个值
  • 通过set(T)方法设置一个值,在当前线程可以通过get()方法获取这个值

代码示例:

import java.util.concurrent.TimeUnit;

/**
 * end()方法返回从begin()方法调用开始到end()方法被调用时的时间差
 *
 * @author pengjunzhe
 */
public class Profiler {
    /**
     * 第一次调用get()方法会进行初始化(如果set方法没有调用),每个线程调用一次
     */
    private static final ThreadLocal<Long> TIME_THREAD_LOCAL = new ThreadLocal<Long>() {
        @Override
        protected Long initialValue() {
            return System.currentTimeMillis();
        }
    };

    public static final void begin() {
        TIME_THREAD_LOCAL.set(System.currentTimeMillis());
    }

    public static final long end() {
        return System.currentTimeMillis() - TIME_THREAD_LOCAL.get();
    }

    public static void main(String[] args) throws Exception {
        Profiler.begin();
        TimeUnit.SECONDS.sleep(1);
        System.out.println("Cost: " + Profiler.end() + " mills");
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员果果

Spring Boot 整合 rabbitmq

场景:用户注册,信息写入数据库后,需要给用户发送注册成功的邮件,再发送注册成功的邮件。

13430
来自专栏银河系资讯

Python列表推导(list comprehension)VS 生成器表达式(generator expression

列表是一种可以表示为元素集合的数据。一个简单的列表如下所示:[0, 1, 2, 3, 4, 5] 列表将所有可能类型的数据和数据组合作为其元素:

13310
来自专栏腾讯Bugly的专栏

Android app反调试与代码保护的一些基本方案

| 导语 本文介绍Android app代码(java + ndk)的反调试的方法和保护代码增加逆向难度的一些基本方法。 Android自问世以来得以迅速发展...

61740
来自专栏一名叫大蕉的程序员

承认吧你压根不懂怎么学新语言 No.142

我相信所有的人基本都会有刚开始入门学习某门语言的时候,比如 Python、JS、Java、Go、Scala,所有人一开始都会被 Hello World !吸引,...

9410
来自专栏Python数据科学

优雅你的Python代码的15个tips

前言:师妹前段时间非常认真地选了下学期的《大数据分析实践》选修课,根据几位师兄的建议买了本书开始自学 Python 语言。然而年后再见,师妹说她看完了书,做了一...

9820
来自专栏芋道源码1024

4 个关于Java 虚拟机内存的问题?

JVM的内存划分中,有部分区域是线程私有的,有部分是属于整个JVM进程;有些区域会抛出OOM异常,有些则不会,了解JVM的内存区域划分以及特征,是定位线上内存问...

10110
来自专栏银河系资讯

Java创建Annotation

注解是Java很强大的部分,但大多数时候我们倾向于使用而不是去创建注解。例如,在Java源代码里不难找到Java编译器处理的@Override注解,Spring...

16520
来自专栏Java那些事

想进大厂光靠背面试题可没用,谈谈如何真正掌握一个技术知识点

如何真正地掌握一个技术知识点,这是我一直在探索的一个问题,在秋招复习的那段时间,我主要通过阅读博客、整理博客等方式构建了自己的知识体系,所以也算是有了一些经验,...

13630
来自专栏Web技术布道师

如何快速掌握HTTP协议(高清思维导图 )

HTTP 协议极其庞杂,它影响着浏览器、爬虫、代理服务器、防火墙、CDN、Web 容器、微服务等诸多方面,自身的规范却并不统一,所要面对的各类软件的新旧版本也同...

24130
来自专栏京程一灯

Chrome 74 带来的新功能[每日前端夜话0x66]

Chrome 74 已经发布了,虽然从用户的角度来看并没有什么令人兴奋的东西,但是对开发人员来说带来了一些好处。新版本附带了新的 Javascript 私有类字...

13520

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励