KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tctest > performance > generate > load > LoadConsumer


1 /*
2  * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
3  */

4 package com.tctest.performance.generate.load;
5
6 import com.tc.util.Assert;
7
8 /**
9  * @ThreadSafe
10  * @LivenessTuned
11  */

12 final class LoadConsumer extends Thread JavaDoc {
13
14   private final LoadBuffer loadBuffer;
15   private final MonitoredWorkQueue workQueue;
16
17   LoadConsumer(LoadBuffer loadBuffer, MonitoredWorkQueue workQueue) {
18     Assert.assertNotNull(loadBuffer);
19     Assert.assertNotNull(workQueue);
20     this.loadBuffer = loadBuffer;
21     this.workQueue = workQueue;
22     setDaemon(true);
23     setPriority(Thread.MIN_PRIORITY);
24   }
25
26   public void run() {
27     Thread JavaDoc worker1 = new Worker();
28     Thread JavaDoc worker2 = new Worker();
29     worker1.start();
30     worker2.start();
31     try {
32       worker1.join();
33       worker2.join();
34     } catch (InterruptedException JavaDoc e) {
35       throw new RuntimeException JavaDoc(e);
36     }
37   }
38
39   private class Worker extends Thread JavaDoc {
40
41     private Worker() {
42       setDaemon(true);
43       setPriority(Thread.MIN_PRIORITY);
44     }
45
46     public void run() {
47       try {
48         while (true) {
49           workQueue.put(loadBuffer.get());
50         }
51       } catch (InterruptedException JavaDoc e) {
52         throw new RuntimeException JavaDoc(e);
53       }
54     }
55   }
56 }
57
Popular Tags