java的ArrayBlockingQueue使用,arrayblockingqueue,import java.
分享于 点击 48381 次 点评:224
java的ArrayBlockingQueue使用,arrayblockingqueue,import java.
import java.util.Date;import java.util.concurrent.ArrayBlockingQueue;public class ArrayBlockingQueueTest { private static ArrayBlockingQueue<Job> queue; public static void main(String[] args) { boolean isFIFO=true; int capacity=2; queue=new ArrayBlockingQueue<Job>(capacity,isFIFO); Provider provider=new Provider(); provider.start(); Consumer consumer=new Consumer(); consumer.start(); } public static class Job { public String id; public boolean isLast=false; public Job(String id) { this.id=id; } } public static class Provider extends Thread { @Override public void run() { try { for(int i=0; i<10; i++) { Job job=new Job(i+""); System.out.println("send job "+job.id+" at: "+new Date()); queue.put(job); } Job lastJob=new Job("Last Job"); lastJob.isLast=true; queue.put(lastJob); } catch (InterruptedException e) { System.out.println("Provider thread "+this.getId()+" interrupted"); return; } } } public static class Consumer extends Thread { @Override public void run() { while(true) { Job job; try { Thread.sleep(1000); job=queue.take(); System.out.println("Got the job: "+job.id); if (job.isLast) { return; } } catch (InterruptedException e) { System.out.println("Consumer thread "+this.getId()+" interrupted"); return; } } } }}
用户点评