I was not advocating volatile as a means of ensuring Thread safety
but more to the side effect of gaining performance

I am a strong personal advocate of synchronized but some of the leads dont want to go that route as it would be too intrusive to re-factor the existing base for the may method calls

(In other words Im in partial agreement)

Thanks for responding,

Martin Gainty

______________________________________________
Disclaimer and confidentiality note
Everything in this e-mail and any attachments relates to the official business of Sender. This transmission is of a confidential nature and Sender does not endorse distribution to any party other than intended recipient. Sender does not necessarily endorse content contained within this transmission.




Sorry Martin,
but using volatile will not make your code any thread-safer.
Volatile (if implemented at all by your VM) will ensure that all
threads sees the "central" copy  instead of their own copy. It won't
prevent you from concurrent modification.

Example:
public MyThread{
 private boolean running;
 public void run(){
    while(running){
      ....
    }
 }

 public void stopThread(){
    running = false;
 }

 public static void test(){
   MyThread t = new MyThread();
   t.start();
   try{
       Thread.sleep(10000);
  }catch(InterruptedException e){}
   t.stopThread();
 }

In this example the variable "running" should be declared volatile to
ensure that the MyThread-thread will actually get the modified copy
and stop (however using  synchronized isRunning()/setRunning(boolean)
methods is far better)

For variables which are modified from many threads you can use
synchronization or atomics (faster on sun).

Btw, using ThreadLocals to avoid synchronization also seems weird :-)

regards
Leon


On 2/10/07, Martin Gainty <[EMAIL PROTECTED]> wrote:
after discussing a few scenarios I came upon the idea of

volatile is to be used as a default declarator (if only for speed..)
ThreadLocal is to be used for complex DataObjects whose size may 'grow' over
time
in this way ThreadLocal guarantees proper initialisation of the entire
object
Lighter (primarily primitive such as int,double) objects may live in memory
as volatile

Thanks Dave--

Martin Gainty

______________________________________________
Disclaimer and confidentiality note
Everything in this e-mail and any attachments relates to the official
business of Sender. This transmission is of a confidential nature and Sender
does not endorse distribution to any party other than intended recipient.
Sender does not necessarily endorse content contained within this
transmission.



>
>--- Martin Gainty <[EMAIL PROTECTED]> wrote:
> > In a StrutsApplication is it best to use delcare
> > variables with volatile OR ThreadLocal to ensure
> > variables are referenced in a ThreadSafe manner?
>
>Which variables, and what types?! (Note mild alarm.)
>Are you attempting to share data, or ensure that it
>*isn't* shared? Where are you accessing the variable?
>
>d.
>
>
>
>
>____________________________________________________________________________________
>Looking for earth-friendly autos?
>Browse Top Cars by "Green Rating" at Yahoo! Autos' Green Center.
>http://autos.yahoo.com/green_center/
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: [EMAIL PROTECTED]
>For additional commands, e-mail: [EMAIL PROTECTED]
>

_________________________________________________________________
Valentine's Day -- Shop for gifts that spell L-O-V-E at MSN Shopping
http://shopping.msn.com/content/shp/?ctId=8323,ptnrid=37,ptnrdata=24095&tcode=wlmtagline


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


_________________________________________________________________
Turn searches into helpful donations. Make your search count. http://click4thecause.live.com/search/charity/default.aspx?source=hmemtagline_donation&FORM=WLMTAG


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to