1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
public class USBThread {
//private static Logger log = Logger.getLogger(USBThread.class);
private final BlockingQueue <String> queue = new LinkedBlockingQueue<String>();
private static USBThread instance = new USBThread();
private ComUSB usbCommunicator = new ComUSB();
// private ComUSB com = new ComUSB();
private USBThread(){
//log.debug("Construnction Thread USB singleton"+Thread.currentThread().getId());
System.out.println("Construnction Thread USB singleton ThreadID : "+Thread.currentThread().getId());
usbCommunicator.start();
}
public static USBThread getInstance(){
//log.debug("Get Thread USB singleton"+Thread.currentThread().getId());
System.out.println("Get Thread USB singleton ThreadID : "+Thread.currentThread().getId());
return instance;
}
public void addMessageInQueue(String message){
//log.debug("addMessageInQueue : "+message);
System.out.println("addMessageInQueue : "+message);
queue.add(message);
}
class ComUSB extends Thread {
public void run() {
//log.debug("starting usbCommunicator Thread ");
System.out.println("starting usbCommunicator (customer) Thread ThreadID : "+Thread.currentThread().getId());
try {
while(true) {
String message = queue.take(); // enleve le premier element de la pile;
sendUSBMessage(message);
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
System.out.println(e);
}
}
private void sendUSBMessage(String message) {
//log.debug("processing message from Queue : "+message);
System.out.println("processing message from Queue : "+message);
}
}
public static void main(String args[]){
new MessageGenerator().start();
new MessageGenerator().start();
new MessageGenerator().start();
new MessageGenerator().start();
}
}
class MessageGenerator extends Thread {
int cpt = 0;
int nbIterations = 10;
public void run() {
while(true && cpt<nbIterations) {
USBThread.getInstance().addMessageInQueue("test N° :" +cpt+" GeneratorID : "+Thread.currentThread().getId());
cpt++;
}
}
} |