(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) {}}}
- (Java功能篇)java版本 线程池实例代码
- java简单线程池实例代码
- java线程池实例
- java线程池实例
- Java线程池实例
- java线程池实例
- java线程池实例
- java 线程池实例
- java 线程池实例
- java线程池实例
- 经典Java线程池的代码及各部分功能简介
- [转载]java 代码构建线程池的实例
- Java Concurrency代码实例之一执行者与线程池
- Java线程等待、通知简单实例代码
- java线程代码篇
- (Oracle 技能篇 ) Oracle 连接池实例代码(Java版本)
- JAVA 线程池的实例
- java线程池使用实例
- ORACLE DATABASE LINK
- 二叉树的探索 poj 2255
- poj 1321 棋盘问题 深搜+剪枝
- 关于XML fragments parsed from previous mappers already contains value for
- linux下 tar解压 gz解压 bz2等各种解压文件使用方法
- (Java功能篇)java版本 线程池实例代码
- 用yum下载rpm包(不安装)到制定目录
- Java常用类
- QTreewidget的 item Checked 编辑
- webpy session 设置
- C语言中union的含义
- (UIImagePickerController)的用法(一)
- poll 系统调用(1)
- mysql错误:……is marked as crashed and should be repaired!