📄 threadpool.java
字号:
package cn.com.csuinfosoft.test;
import java.util.LinkedList;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadPool {
private Thread[] threads = null;
private int maxThreadNum = 0;
private LinkedList<Runnable> queue = null;
public ThreadPool(int argMaxNum) {
maxThreadNum = argMaxNum;
threads = new Thread[maxThreadNum]; //构造线程池中的线程数组
Thread thread = null;
for(int i = 0; i < maxThreadNum; i++) {
thread = new MyThread();
thread.setDaemon(true); //后台线程
thread.start();
threads[i] = thread;
}
queue = new LinkedList<Runnable>();
}
public void execute(Runnable runnable) {
queue.add(runnable);
queue.notify();
}
private class MyThread extends Thread {
public void run() {
while(true) {
synchronized(queue) {
try {
queue.wait(); //形成阻塞,等待Execute方法中调用notify唤醒
} catch (InterruptedException e) {
e.printStackTrace();
}
Runnable r = queue.remove(0); //从队列中获取一个待执行的Runnable实例
r.run();
}
}
}
}
public static void main(String args[]) {
/*JDK1.5 线程池服务类*/
//10---对应线程池中 线程数量
ExecutorService executor = Executors.newFixedThreadPool(10);
Runnable runnable = new MyRunnable();
Runnable runnable2 = new MyRunnable();
Runnable runnable3 = new MyRunnable();
Runnable runnable4 = new MyRunnable();
executor.execute(runnable);
executor.execute(runnable2);
executor.execute(runnable3);
executor.execute(runnable4);
executor.shutdown(); //销毁线程池中所有的线程资源
}
}
class MyRunnable implements Runnable {
public void run() {
System.out.println("DragLong...Madiadia");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -