(Java功能篇)java版本 线程池实例代码
2013-08-07 09:57
666 查看
截图效果:
任务功能代码:
线程池代码:
测试代码:
任务功能代码:
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 stub try { 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实现FTP文件的上传和下载功能的实例代码
- Java实现FTP服务器功能实例代码
- (Oracle 技能篇 ) Oracle 连接池实例代码(Java版本)
- log4j JAVA 简单日志功能 实现 实例 教程 代码
- Web Service 简单实例(java 版本) ,IDE自动生成客户端代码方法
- Java实现二维码功能的实例代码
- 微信开发从入门到精通教程大全 资料大全 java和php版本;教程文档、代码、视频 微信商城实例
- java简单线程池实例代码
- JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)
- Java实现AOP功能的封装与配置的小框架实例代码
- java简单线程池实例代码
- Java与WebUploader相结合实现文件上传功能(实例代码)
- Java 定时器(Timer)及线程池里使用定时器实例代码
- Java Concurrency代码实例之一执行者与线程池
- Java中使用fileupload组件实现文件上传功能的实例代码
- Java 线程池详解及实例代码
- Java实现对中文字符串的排序功能实例代码
- Java生成验证码功能实例代码
- Java实现对中文字符串的排序功能实例代码