Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class ResponseQueue {
- private ResponseQueue(){}
- private BlockingQueue<Message> queue = new SynchronousQueue<Message>();
- public synchronized Message poll()
- {
- Log log = LogFactory.getLog(this.getClass());
- Message response = null;
- do {
- try {
- response = queue.take();
- if(response!=null)
- {return response;}
- else {
- log.error("null");
- }
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- } while ((response == null));
- return null;
- }
- public synchronized boolean push(Message response)
- {
- Log log = LogFactory.getLog(this.getClass());
- boolean done = false;
- while(!done){
- System.out.println("tryin");
- queue.add(response);
- if(!queue.isEmpty())
- {done = true;
- return true;}
- }
- return false;
- }
- private static class LazyHolder {
- private static final ResponseQueue INSTANCE = new ResponseQueue();
- }
- public static ResponseQueue getInstance() {
- return LazyHolder.INSTANCE;
- }
- public class TestSendReceiveFromResponseQueue extends TestCase{
- ResponseQueue respQueue;
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- respQueue= ResponseQueue.getInstance();
- }
- class Receiver implements Runnable {
- Message message;
- @Override
- public void run() {
- message = null;
- while(true){
- while (message==null) {
- message = respQueue.poll();
- }
- }
- }
- }
- class Sender implements Runnable {
- Message message = new Message();
- @Override
- public void run() {
- message.setResponse("test");
- respQueue.push(message);
- }
- }
- public void test() {
- Receiver r = new Receiver();
- new Thread(r).start();
- Sender s = new Sender();
- new Thread(s).start();
- while(r.message==null)
- {
- }
- assertEquals(true, r.message.getResponse().equals("test"));
- }
- }
- public void run() {
- Message message = null; //This line here creates a new local variable called message!
- ...
- }
- message = null;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement