(Java功能篇)java版本 线程池实例代码

来源:互联网 发布:应用数学知乎 编辑:程序博客网 时间:2024/05/17 22:54

截图效果:

 

 

任务功能代码:

package com.rf.pool;//任务对象public class SimpleThread extends Thread {// 相关参数private boolean runningFlag;// 是否运行private String argument;public boolean isRunning() {return runningFlag;}// 同步锁方法(设置任务是否运行)public synchronized void setRunning(boolean flag) {runningFlag = flag;if (flag)// 唤醒在此对象监视器上等待的单个线程。this.notify();}public String getArgument() {return this.argument;}public void setArgument(String string) {argument = string;}// 相关构造函数(线程编号参数)public SimpleThread(int threadNumber) {runningFlag = false;System.out.println("线程: " + threadNumber + "准备开始。");}// 同步锁方法public synchronized void run() {try {while (true) {// 判断是否运行标准if (!runningFlag) {// 无任务,线程等待this.wait();// System.out.println("线程等待中......");} else {// 线程开始执行相关方法System.out.println("processing " + getArgument() + " 执行完毕.");sleep(5000);System.out.println("线程休眠");// 线程执行完毕(设置线程是否进行为false)setRunning(false);}}} catch (InterruptedException e) {System.out.println("Interrupt");}}}


线程池代码:

package com.rf.pool;import java.util.Vector;public class ThreadPoolManager {private int maxThread;public Vector vector;// 设置最大线程public void setMaxThread(int threadCount) {maxThread = threadCount;}// 线程池的构造方法public ThreadPoolManager(int threadCount) {setMaxThread(threadCount);System.out.println("开始启动线程池:");vector = new Vector();// 线程启动存放至Vector数组中for (int i = 1; i <= 10; i++) {SimpleThread thread = new SimpleThread(i);// 添加相关任务线程vector.addElement(thread);thread.start();}}// 线程处理方法public void process(String argument) {int i;for (i = 0; i < vector.size(); i++) {SimpleThread currentThread = (SimpleThread) vector.elementAt(i);// 判断当前线程是否运行if (!currentThread.isRunning()) {System.out.println("Thread " + (i + 1) + "正在处理:" + argument);// 设置相关参数currentThread.setArgument(argument);// 设置该线程处于运行状态currentThread.setRunning(true);return;}}if (i == vector.size()) {System.out.println("线程池已满,请等待!.");}}}


测试代码:

package com.rf.pool;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Test {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubtry {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String s;ThreadPoolManager manager = new ThreadPoolManager(10);while ((s = br.readLine()) != null) {manager.process(s);}} catch (IOException e) {}}}


 

原创粉丝点击