java_多线程调用笔记3

 

/**
 * 任务服务类,继承ExecutorCompletionService

 */
public class ThreadGroupService<V>  {
 
 private AtomicInteger size = new AtomicInteger();// 线程个数计数
 
 private String threadGroupName = null; //任务名

 private boolean end = false;//线程结束标志
 
 private ConcurrentLinkedQueue<Future<V>> futureQueue = new ConcurrentLinkedQueue<Future<V>>();//任务结果列表
 
 private boolean isRuning = false;//当前任务是否处于排队状态,true表示排队
 
 private Date time = null;//开始时间
 
 private int order = 0;// 排队序号
 
 /**
  * 初始化任务
  * @param threadGroupName 任务名
  * @param isBusy 是否忙
  * @param order
  */
 public ThreadGroupService(String threadGroupName,boolean isBusy,int order) {
  this.threadGroupName = threadGroupName;
  this.isRuning = !isBusy; //忙时,设置非运行状态
  this.order = order;
  this.time = new Date();
 }
 

 public Future<V> submit(Callable<V> task,ThreadPoolExecutor threadPool) {
  size.incrementAndGet();
  Future<V> future = threadPool.submit(task);
  futureQueue.offer(future);
  return future;
 }

 
 
 /**
  * 是否处于运行状态
  * @return
  */
 public boolean isRuning() { 
  return isRuning || futureQueue.peek().isDone();
 } 
 
 /**
  * 查询符合条件任务
  * @param threadGroupName
  * @param queue
  * @return
  */
 public static ThreadGroupService<String> getThreadGroup(
   String threadGroupName, List <ThreadGroupService<String>> queue) {
  int len = queue.size();
  for(int i =0 ;i<len; i++ ){
   ThreadGroupService<String> service = queue.get(i);
   if(service.getThreadGroupName().equals(threadGroupName)){
    return service;
   }
  }   
  return null;
 }
 
 public ConcurrentLinkedQueue<Future<V>> getFutureQueue() {
  return futureQueue;
 }

 public void setOrder(int order) {
  this.order = order;  
 }

 
 public int getSize() {
  return size.get();
 }
 
 public int getOrder() {
  return this.order;
 } 

 public String getThreadGroupName() {
  return threadGroupName;
 }

 public void setEnd() {
  this.end = true;  
 }
 
 public boolean isEnd() {
  return this.end;
 }
 

 public Date getTime() {
  return time;
 }

}

posted @ 2014-04-23 14:06  波风甲穵  阅读(111)  评论(0)    收藏  举报