package taskCenter;
import java.util.ArrayList;
import java.util.Stack;
public class TaskProcesserFactory {
static private TaskProcesserFactory factory = new TaskProcesserFactory();
private Stack processers = new Stack();
private ArrayList total_Processers = new ArrayList();
private int currProcessers = 0;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
}
public void process(Task t)
{
TaskProcesser employee = getProcesser();
if(employee != null)
employee.assignTask(t);
}
private TaskProcesserFactory()
{
for(;currProcessers<ApplicationConstant.MIN_PROCESSERS;currProcessers++)
{
TaskProcesser p = new TaskProcesser("Thread-"+ (currProcessers+1), this);
p.start();
addFactory(p);
total_Processers.add(p);
}
}
public TaskProcesser getProcesser()
{
TaskProcesser p = null;
try {
p =(TaskProcesser)processers.pop();
return p;
}
catch(Exception e)
{
p = newProcesser();
return p;
}
}
public void removeProcessor(TaskProcesser p)
{
processers.remove(p);
}
public boolean isAvaible()
{
boolean result = !processers.isEmpty();
if(!result)
{
result = !(currProcessers == ApplicationConstant.MAX_PROCESSERS);
}
if(!result)
System.out.println("Task Processer no extro processor");
return result;
}
private synchronized TaskProcesser newProcesser()
{
if(currProcessers < ApplicationConstant.MAX_PROCESSERS)
{
TaskProcesser p = new TaskProcesser("Thread-"+ (currProcessers+1),this);
p.start();
addFactory(p);
total_Processers.add(p);
currProcessers++;
//processers.push(p);
return p;
}
return null;
}
public void addFactory(TaskProcesser newProcessor)
{
processers.push(newProcessor);
}
static public TaskProcesserFactory getInstance()
{
return factory;
}
public void close()
{
System.out.println(total_Processers.size());
for(int i = 0; i< total_Processers.size(); i++)
{
TaskProcesser p = (TaskProcesser)total_Processers.get(i);
p.interrupt();
//p.notify();
System.out.println("Interupt :" + p);
}
try
{
notifyAll();
}
catch(Exception e)
{
;
}
}
}

huangtonglang
- 粉丝: 0
最新资源
- 【Android应用源码】音乐播放器videoplayer.zip
- 【Android应用源码】音乐播放器-.zip
- 【Android应用源码】音乐播放器源码.zip
- MAE154A_UAVDesign-master.zip
- Trabalho_SCM_Drone_UAV-main.zip
- UAV-control-and-path-planning-main.zip
- 基于动量的估计器无人机.zip
- 带有 matlab 的小型卸载飞机书示例模型.zip
- 多架无人机(在 MATLAB 中模拟)的容错和无碰撞区域覆盖系统。.zip
- 基于多任务的多目标海鞘群算法(MTMMA)用于无人机视觉覆盖.zip
- 具有基线结果的无人机路径规划多目标基准的源代码.zip
- 激光雷达和光谱传感器在桉树属遗传改良实验自动评估中的潜在应用的调查”。.zip
- N通道MOS管Si2301产品介绍
- devops实战模型.zip
- 【Android应用源码】音量seekbar制作.zip
- 【Android应用源码】银联支付Demo.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



- 1
- 2
- 3
前往页