ThredLocal的使用
ThredLocal的使用
小小明童鞋 发表于8个月前
ThredLocal的使用
  • 发表于 8个月前
  • 阅读 27
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

ThredLocal,即线程变量,是一个以ThreadLocal对象为键、任意对象为值得存储结构。

package cn.com.test;

import java.util.concurrent.TimeUnit;

public class Profiler {

	//第一次get()方法调用时会进行初始化(如果set方法没有调用),每个线程会调用一次
	private static final ThreadLocal<Long> TIME_THREADLOCAL = new ThreadLocal<Long>(){
		protected  Long initialValue(){
			return System.currentTimeMillis();
		}
		};
		
		public static final void begin() {
			TIME_THREADLOCAL.set(System.currentTimeMillis());
	}
		
		public static final long end(){
			return System.currentTimeMillis() - TIME_THREADLOCAL.get();
		}
		
		public static void main(String[] args) throws Exception {
			Profiler.begin();
			TimeUnit.SECONDS.sleep(10);
			System.out.println("cost:" + Profiler.end() + " mills");
		}
}

以上Profiler可以被复用在方法调用耗时统计的功能上,在方法的入口前执行begin()方法,在方法调用后执行end()方法,好处是两个方法的调用不用再一个方法或者类中,比如在AOP(面向切面变成)中,可以在方法调用前的切入点执行begin()方法,而在方法调用后的切入点执行end()方法,这样依旧可以获得方法的执行耗时。

标签: ThreadLocal 耗时
共有 人打赏支持
粉丝 4
博文 51
码字总数 15151
×
小小明童鞋
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: