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)
{
;
}
}
}
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
huangtonglang
- 粉丝: 0
- 资源: 2
最新资源
- 打包和分发Rust工具.pdf
- SQL中的CREATE LOGFILE GROUP 语句.pdf
- C语言-leetcode题解之第172题阶乘后的零.zip
- C语言-leetcode题解之第171题Excel列表序号.zip
- C语言-leetcode题解之第169题多数元素.zip
- ocr-图像识别资源ocr-图像识别资源
- 图像识别:基于Resnet50 + VGG16模型融合的人体细胞癌症分类模型实现-图像识别资源
- C语言-leetcode题解之第168题Excel列表名称.zip
- C语言-leetcode题解之第167题两数之和II-输入有序数组.zip
- C语言-leetcode题解之第166题分数到小数.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
- 1
- 2
- 3
前往页