java/lang/InheritableThreadLocal

Started by sukishan, Sep 04, 2009, 09:48 PM

previous topic - next topic
Go Down

sukishan

package java.lang;

import System.LocalDataStoreSlot;

public class InheritableThreadLocal extends ThreadLocal
{
   private static final Object NOT_INIT = new Object();
   private Thread rootThread;
   private Object rootValue;

   public InheritableThreadLocal()
   {
      super();
      rootThread = Thread.currentThread();
      rootValue = NOT_INIT;
   }

   private boolean isRoot()
   {
      return Thread.currentThread().equals(rootThread);
   }

   private Object getRootValue()
   {
      if (rootValue == NOT_INIT)
         rootValue = super.get();
      return rootValue;
   }

   private void setRootValue(Object value)
   {
      this.rootValue = value;
   }

   public synchronized Object get()
   {
      if (!isRoot())
      {
         Object o = System.Threading.Thread.GetData(slot);
         if (o == null)
         {
            o = childValue(getRootValue());
            System.Threading.Thread.SetData(slot, o);
         }
      }
      return super.get();
   }

   public synchronized void set(Object value)
   {
      if (value == null)
         value = NULL;
      System.Threading.Thread.SetData(slot, value);
      if (isRoot())
         setRootValue(value);
   }

   protected Object childValue(Object parentValue)
   {
      return parentValue;
   }
}
A good beginning makes a good ending

Go Up
 

Quick Reply

With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post.

Warning: this topic has not been posted in for at least 120 days.
Unless you're sure you want to reply, please consider starting a new topic.

Note: this post will not display until it's been approved by a moderator.
Name:
Email:
Verification:
Please leave this box empty:

Type the letters shown in the picture
Listen to the letters / Request another image

Type the letters shown in the picture:

shortcuts: alt+s submit/post or alt+p preview
IT Acumens | GinGly :: SMS Backup | Acumen :: Discussion Board | AshokPillar :: Hosting | CineBuzz :: Latest Cinema News | My Kids Diary :: Capture your kids magical moment
Copyright 2005 - 2017 :: IT Acumens :: All Rights Reserved.
ITAcumens Forum with 2 lakhs post running for 10 years - Powered by HostGator Dedicated Server