/*
* Copyright 2012 The Solmix Project
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.gnu.org/licenses/
* or see the FSF site: http://www.fsf.org.
*/
package org.solmix.commons.tasks.impl;
import java.util.List;
import org.solmix.commons.tasks.CommandTask;
import org.solmix.commons.tasks.TaskAdmin;
import org.solmix.commons.tasks.TaskDeliver;
import org.solmix.commons.tasks.TaskSet;
import org.solmix.commons.tasks.TaskThreadPool;
/**
*
* @author Administrator
* @version 110035 2012-12-24
*/
public class ParallelTaskAdmin implements TaskAdmin
{
private TaskDeliver deliver;
TaskThreadPool asy_pool;
private int colePoleSize = 20;
public int getPoolSize() {
return colePoleSize;
}
public void setPoolSize(int poolSize) {
this.colePoleSize = poolSize;
}
private String groupThreadName = "TaskThread";
ParallelTaskAdmin()
{
}
public static TaskAdmin getInstance() {
return new ParallelTaskAdmin();
}
@Override
public void process(List<CommandTask> tasks) {
initDeliver();
deliver.execute(tasks);
}
public TaskSet process(TaskSet taskset) {
initDeliver();
deliver.execute(taskset.getTasks());
return taskset;
}
private void initDeliver() {
if (deliver == null) {
// syn_pool= new TaskThreadPool(40,false);
asy_pool = new TaskThreadPool(colePoleSize, this.getGroupThreadName());
deliver = new AsyncDeliver(asy_pool);
}
}
/**
* Once the garbage collector frees memory space occupied by the object,
* the first call this method.
*
*/
@Override
protected void finalize() {
if (asy_pool != null)
asy_pool.shutdown();
}
public String getGroupThreadName() {
return groupThreadName;
}
public void setGroupThreadName(String groupThreadName) {
this.groupThreadName = groupThreadName;
}
}