001package com.thed.zblast.scheduler; 002 003import java.util.concurrent.ArrayBlockingQueue; 004import java.util.concurrent.BlockingQueue; 005import java.util.concurrent.atomic.AtomicInteger; 006 007public class EventProducerTest extends Thread { 008 009 private final BlockingQueue<ProgressWorkUnit<JobProgressDTO>> queue; 010 private AtomicInteger idGenerator; 011 012 public EventProducerTest(BlockingQueue<ProgressWorkUnit<JobProgressDTO>> queue) { 013 this.queue = queue; 014 idGenerator = new AtomicInteger(); 015 } 016 017 @Override 018 public void run() { 019 for (int i = 0; i < 10; i++) { 020 try { 021 Thread.sleep(2000); 022 } catch (InterruptedException e1) { 023 // TODO Auto-generated catch block 024 e1.printStackTrace(); 025 } 026 System.out.println("Slepp for 2 seconds... "); 027 boolean wasAdded = false; 028 JobProgressDTO eventToAdd = new JobProgressDTO(Long.valueOf(idGenerator.getAndIncrement()), "Job name"); 029 try { 030 wasAdded = queue.add(new ProgressWorkUnit<>(eventToAdd)); 031 } catch (Exception e) { 032 System.out.println("Adding Thread was interrupted"); 033 } 034 } 035 } 036 037 038 public static void main(String args[]) { 039 040 BlockingQueue<ProgressWorkUnit<JobProgressDTO>> queue = new ArrayBlockingQueue<>(3); 041 042 EventProducerTest producer = new EventProducerTest(queue); 043 JobExecutionProgressConsumer consumer = new JobExecutionProgressConsumer(queue); 044 045 producer.start(); 046 consumer.start(); 047 048 } 049 050}