Thread-Specific-Storage[线程保管箱]
一:Thread-Specific Storage的参与者
--->记录日志的线程(ClientThread)
--->负责获取不同线程记录日志(Log)
--->负责将日志写入文件的类(TsLog)
二:Thread-Specific Storage模式什么时候使用
--->当每个线程必须有自己的独有信息时,可以将该信息放入线程保管箱ThreadLocal
三:Thread-Specific Storage思考
--->放置线程特有信息的地方
(1)线程外--->线程的保管箱ThreadLocal
(2) 线程内-->线程体的局部变量
--->多线程处理共有数据,存在共享互斥
--->共享互斥会降低性能,所以要尽量将共享互斥的范围缩小
--->线程的性能在于线程代码的实现
四进阶说明
--->
记录日志的行为类
1 package com.yeepay.sxf.thread11; 2 3 import java.io.FileWriter; 4 import java.io.PrintWriter; 5 6 /** 7 * 日志类 8 * @author sxf 9 * 10 */ 11 public class TsLog { 12 //写日志对象 13 private PrintWriter printWriter=null; 14 15 //构造器 16 public TsLog(String fileName){ 17 try { 18 printWriter=new PrintWriter(new FileWriter(fileName)); 19 } catch (Exception e) { 20 // TODO Auto-generated catch block 21 e.printStackTrace(); 22 } 23 } 24 25 //添加一条日志 26 public void addLogStr(String logstr){ 27 printWriter.print(logstr); 28 } 29 30 //关闭输出流 31 public void closeLog(){ 32 printWriter.close(); 33 } 34 }