Java,将某些东西"绑定"给一个Thread

Mal*_*lax 3 java multithreading

我只是想知道一些库如何检测它们运行在哪个线程并"绑定"某些东西......例如log4j的映射诊断上下文(MDC)或来自Mozilla Rhino的Context.enter().我怎么能这样做,以防万一我偶然发现我需要这个的情况.;-)

祝你今天愉快!

Zar*_*nen 8

您可以使用ThreadLocal变量获得每线程信息.我对Rhino或log4j的细节一无所知,但我想他们是这样做的.

来自Javadoc的示例,为每个线程分配不同的序列号.

 public class SerialNum {
     // The next serial number to be assigned
     private static int nextSerialNum = 0;

     private static ThreadLocal serialNum = new ThreadLocal() {
         protected synchronized Object initialValue() {
             return new Integer(nextSerialNum++);
         }
     };

     public static int get() {
         return ((Integer) (serialNum.get())).intValue();
     }
 }
Run Code Online (Sandbox Code Playgroud)