java Thread start() 特性
写了两个简单的类。本来写这两个类的初衷是为了 验证 log4j 异步打印日志时的 MDC 衔接问题。但是由于疏忽,有个地方写错了。
?
public class LogThread extends Thread{String message;private Logger log = Logger.getLogger(this.getClass().getName());public LogThread(String tranId) { this.message = tranId;MDC.put("tranId", message);}@Overridepublic void run() {log.info(message+"_"+MDC.get("tranId"));}}?运行结果如下:
[105614.713][INFO ](aaa_1) aaa_1_null? [LogThread.java:18 ]
[105614.713][INFO ](aaa_4) aaa_4_aaa_3? [LogThread.java:18 ]
[105614.713][INFO ](aaa_3) aaa_3_aaa_2? [LogThread.java:18 ]
[105614.713][INFO ](aaa_2) aaa_2_aaa_1? [LogThread.java:18 ]
[105614.713][INFO ](aaa_5) aaa_5_aaa_4? [LogThread.java:18 ]能看出什么地方写错了吗?