Advertisement
Guest User

Untitled

a guest
Aug 31st, 2015
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.13 KB | None | 0 0
  1. public class ResponseQueue {
  2.  
  3. private ResponseQueue(){}
  4.  
  5. private BlockingQueue<Message> queue = new SynchronousQueue<Message>();
  6.  
  7. public synchronized Message poll()
  8. {
  9. Log log = LogFactory.getLog(this.getClass());
  10.  
  11. Message response = null;
  12. do {
  13. try {
  14. response = queue.take();
  15. if(response!=null)
  16. {return response;}
  17. else {
  18. log.error("null");
  19. }
  20.  
  21. } catch (InterruptedException e) {
  22. // TODO Auto-generated catch block
  23. e.printStackTrace();
  24. }
  25. } while ((response == null));
  26.  
  27. return null;
  28.  
  29. }
  30.  
  31. public synchronized boolean push(Message response)
  32. {
  33. Log log = LogFactory.getLog(this.getClass());
  34. boolean done = false;
  35. while(!done){
  36. System.out.println("tryin");
  37. queue.add(response);
  38. if(!queue.isEmpty())
  39. {done = true;
  40. return true;}
  41.  
  42. }
  43. return false;
  44.  
  45. }
  46.  
  47.  
  48.  
  49. private static class LazyHolder {
  50. private static final ResponseQueue INSTANCE = new ResponseQueue();
  51. }
  52.  
  53. public static ResponseQueue getInstance() {
  54. return LazyHolder.INSTANCE;
  55. }
  56.  
  57. public class TestSendReceiveFromResponseQueue extends TestCase{
  58. ResponseQueue respQueue;
  59.  
  60. @Override
  61. protected void setUp() throws Exception {
  62. super.setUp();
  63. respQueue= ResponseQueue.getInstance();
  64. }
  65.  
  66. class Receiver implements Runnable {
  67. Message message;
  68.  
  69. @Override
  70. public void run() {
  71. message = null;
  72. while(true){
  73. while (message==null) {
  74. message = respQueue.poll();
  75.  
  76. }
  77. }
  78. }
  79.  
  80. }
  81.  
  82. class Sender implements Runnable {
  83. Message message = new Message();
  84.  
  85. @Override
  86. public void run() {
  87. message.setResponse("test");
  88.  
  89.  
  90. respQueue.push(message);
  91.  
  92. }
  93.  
  94. }
  95.  
  96. public void test() {
  97. Receiver r = new Receiver();
  98. new Thread(r).start();
  99.  
  100. Sender s = new Sender();
  101. new Thread(s).start();
  102.  
  103. while(r.message==null)
  104. {
  105.  
  106. }
  107. assertEquals(true, r.message.getResponse().equals("test"));
  108. }
  109. }
  110.  
  111. public void run() {
  112. Message message = null; //This line here creates a new local variable called message!
  113. ...
  114. }
  115.  
  116. message = null;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement