2009-07-21 3 views
3

私は、log4jやContextのMapped Diagnostic Context(MDC)のようにいくつかのライブラリがどのスレッドでどのスレッドをどのように実行して「バインド」しているのか疑問に思いました。 Mozilla Rhinoからenter()してください。どのように私はそれを行うことができます、ちょうど私がこの必要がある場合につまずく場合。 ;-)Javaは "Thread"に何かを "bind"します

楽しい一日を!

答えて

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(); 
    } 
} 
+0

この例を現在の 'ThreadLocal' APIドキュメントで使用しないでください。 –

関連する問題