org.jgroups.protocols
Class SCOPE.QueueThread

java.lang.Object
  extended by org.jgroups.protocols.SCOPE.QueueThread
All Implemented Interfaces:
java.lang.Runnable
Enclosing class:
SCOPE

protected class SCOPE.QueueThread
extends java.lang.Object
implements java.lang.Runnable


Field Summary
protected  boolean first
           
protected  SCOPE.MessageQueue queue
           
 
Constructor Summary
SCOPE.QueueThread(SCOPE.MessageQueue queue)
           
 
Method Summary
 void run()
          Try to remove as many messages as possible from the queue and pass them up.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

queue

protected final SCOPE.MessageQueue queue

first

protected boolean first
Constructor Detail

SCOPE.QueueThread

public SCOPE.QueueThread(SCOPE.MessageQueue queue)
Method Detail

run

public void run()
Try to remove as many messages as possible from the queue and pass them up. The outer and inner loop and the size() check at the end prevent the following scenario:
 - Threads T1 and T2
 - T1 has the CAS
 - T1: remove() == null
 - T2: add()
 - T2: attempt to set the CAS: false, return
 - T1: set the CAS to false, return
 ==> Result: we have a message in the queue that nobody takes care of !
 

Specified by:
run in interface java.lang.Runnable


Copyright © 1998-2012 Bela Ban / Red Hat. All Rights Reserved.