多线程共享变量的维护是非常头痛的问题,采用乐观悲观策略,悲观策略简单地做法我们可以对共享变量加锁实现,但是锁的开销是比较大的,因此我们也可以通过乐观策略,采用类似CAS(Compare And Set)的方法进行维护,当然,在读多写少的情况下,我们还可以采用Copy-On-Write写时复制的来控制共享变量,其中最经典的实现那就是JDK的CopyOnWriteArrayList了。
好了,说了这么多,下面正式进入正题。我们可以想这么一个问题,在多线程环境中如何对每一条线程的生命周期进行跟踪,跟具体地说,在web项目中,我们通常会对某一个请求从进入系统到退出系统的整个生命周期进行日志记录,又或者说是对一个事务的全过程进行跟踪记录,通常的做法是采用为每个线程建立一个叫transactionId的值,用于标识每个线程并进程跟踪,下图红圈即为transactionId的值。