package nkc.util;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class ExcutorUtil {
private static ExcutorUtil util;
//线程池数量
private final int POOL_SIZE = 20;
//线程池
private static ExecutorService executorService;
private ExcutorUtil() {
executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() * POOL_SIZE);
}
public synchronized void execute(Runnable task) {
executorService.execute(task);
}
public synchronized Future<?> submit(Callable<?> task) {
Future<?> f = executorService.submit(task);
return f;
}
public static synchronized ExcutorUtil getSingleInstance() {
if (util == null) {
util = new ExcutorUtil();
}
return util;
}
public static void main(String[] args) {
int index = 1;
while (true) {
test(index++);
}
}
public static void test(final int index) {
ExcutorUtil service = ExcutorUtil.getSingleInstance();
service.execute(new Runnable() {
public void run() {
try {
Thread.sleep(5 * 1000);
System.out.println(" Thread :" + index);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
}
}
调用多线程
public static synchronized void nkc(final String userId,
final String version) {
ExcutorUtil excutorService = ExcutorUtil.getSingleInstance();
excutorService.execute(new Runnable() {
public void run() {
nkccall();
}
});
}