`
廖世勇
  • 浏览: 91096 次
  • 性别: Icon_minigender_1
  • 来自: 湖南郴州
社区版块
存档分类
最新评论

java简单线程池实例代码

 
阅读更多


package aa;

import java.util.Random;

public class DownThread extends Thread {

private boolean runFlag;

public boolean isRunFlag() {

return runFlag;

}

public DownThread(){

System.out.println(this.getName()+" 初始化");

this.setRunFlag(false);

}

public synchronized void setRunFlag(boolean runFlag) {

this.runFlag=runFlag;

if(runFlag)this.notify();

}

public synchronized void run(){

while (true){

if(!this.isRunFlag()){

try{

this.wait();

}catch(InterruptedException e){

e.printStackTrace();

}

}

System.out.println(this.getName()+"doingsomething!");

Random ran=new Random();

try{

long l=10001*(ran.nextInt(10)+1);

System.out.println("这活要干 "+l+"毫秒");

sleep(l);

}catch(InterruptedException e){

e.printStackTrace();

}

System.out.println(this.getName()+"done!");

this.setRunFlag(false);

System.out.println(this.getName()+"回收");

ThreadPool.removeThread(this);

}

}

}


============================================================================

package aa;

import java.util.LinkedList;

public class ThreadPool {

final static int MaxLength=20;

private static LinkedList pool=null;

public ThreadPool(){

System.out.println("初始化线程池="+MaxLength);

pool=new LinkedList();

for(int i=0;i<MaxLength;i++){

DownThread thread=new DownThread();

removeThread(thread);

thread.start();

}

}

public boolean isFull(){

return pool.isEmpty();

}

public void addThread(){

synchronized (pool) {

while(this.isFull()){

System.out.println("线程池满,等待中。。。。。");

try{

pool.wait();

}catch(InterruptedException e){

e.printStackTrace();

}

}

DownThread thread=(DownThread)pool.removeFirst();

if(!thread.isRunFlag()){

System.out.println(thread.getName()+"is processing");

thread.setRunFlag(true);

}

}

}

public static void removeThread(DownThread downThread) {

synchronized (pool) {

pool.addLast(downThread);

pool.notify();

}

}

public static void main(String[] args){

ThreadPool test=new ThreadPool();

for(int i=0;i<1000;i++){

test.addThread();

}

}

}

package aa;

public class TestThread extends Thread{

public static void main(String args[]){

Runner r=new Runner();

Thread t1=new Thread(r);

Thread t2=new Thread(r);

t1.start();

t2.start();

}

}

class Runner implements Runnable{

public Runner(){

super();

}

public void run(){

for(int i=0;i<20;i++){

System.out.println("NO."+i);

}

}

}

分享到:
评论

相关推荐

    Java线程池实例

    简单实用的java线程池实例代码。包括测试代码和工程文件。

    java中通用的线程池实例代码

    java中通用的线程池实例代码,需要的朋友可以参考一下

    Java 线程池详解及实例代码

    主要介绍了Java 线程池的相关资料,并符实例代码,帮助大家学习参考,需要的朋友可以参考下

    线程池的实现(JAVA)

    很多人仅仅了解过线程池的强大,确没有亲自动手去实现。在这里提供一份用JAVA写的实例代码,供大家参考。

    Java并发之串行线程池实例解析

    主要介绍了Java并发之串行线程池实例解析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下

    JAVA线程池原理实例详解

    主要介绍了JAVA线程池原理,结合实例形式详细分析了java线程池概念、原理、创建、使用方法及相关注意事项,需要的朋友可以参考下

    JAVA线程池介绍以及简单实例

    JAVA线程池介绍以及简单实例,代码加文档 。原始资源连接 https://wenku.baidu.com/view/a3d09d0316fc700abb68fce9.html?from=search

    Java 线程池ExecutorService详解及实例代码

    主要介绍了Java 线程池ExecutorService详解及实例代码的相关资料,线程池减少在创建和销毁线程上所花的时间以及系统资源的开销.如果不使用线程池,有可能造成系统创建大量线程而导致消耗系统内存以及”过度切换

    Java 定时器(Timer)及线程池里使用定时器实例代码

    主要介绍了Java 定时器(Timer)及线程池里使用定时器实例代码的相关资料,需要的朋友可以参考下

    Java线程池ForkJoinPool实例解析

    主要介绍了Java线程池ForkJoinPool实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    使用Java匿名内部类实现一个简单的线程池.txt

    这段代码实现了一个简单的线程池ExecutorService,其中使用了Java的匿名内部类。在类的构造方法中,首先创建了一个固定大小为5的线程池。然后通过循环提交了10个任务到线程池中执行。每个任务都是一个匿名内部类实现...

    JAVA 范例大全 光盘 资源

    实例132 执行任务(线程池) 378 实例133 碰撞的球(多线程) 382 实例134 钟表(多线程) 387 实例135 模拟生产者与消费者 392 实例136 仿迅雷下载文件 396 第15章 图形编程 403 实例137 多变的按钮 403 ...

    java高手真经 光盘源码

    javathread.zip 10.Java多线程编程(线程池、生产者消费者、存取款实例) javautil.zip 11.Java常用实体类 javaxml.zip 14.XML属性文件 第4部分(6个程序包) javagui.zip 15.Java GUI库对比实例 javaawt.zip ...

    java范例开发大全源代码

     实例1 开发第一个Java程序 7  第2章 Java基础类型与运算符(教学视频:39分钟) 9  2.1 基础类型 9  实例2 自动提升 9  实例3 自动转换 10  实例4 常用基础类型之强制转换 11  2.2 运算符 12 ...

    Java线程池ThreadPoolExecutor原理及使用实例

    主要介绍了Java线程池ThreadPoolExecutor原理及使用实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    java范例开发大全

    实例278 通过指定的URL可以获取网页的源代码 542 实例279 一对多通信模式 544 实例280 自制浏览器 549 实例281 扫描TCP端口 551 实例282 TCP协议服务器 552 实例283 TCP协议客户机 553 实例284 Socket连接信息 555 ...

    java 线程公平锁与非公平锁详解及实例代码

    主要介绍了java 线程公平锁与非公平锁详解及实例代码的相关资料,需要的朋友可以参考下

    Java高手真经(编程基础卷)光盘全部源码 免积分

    javathread.zip 10.Java多线程编程(线程池、生产者消费者、存取款实例) javautil.zip 11.Java常用实体类 javaxml.zip 14.XML属性文件 第4部分(6个程序包) javagui.zip 15.Java GUI库对比实例 javaawt.zip ...

    Java JDK实例宝典

    全部代码出自电子工业出版社夏先波的《Java JDK实例宝典》一书,本书以J2SE 5.0为开发环境,选取Java应用的典型实例,循序渐进地介绍了Java语言的各种开发方法和技巧,实例代码注释详细规范,思路清晰。 第1章 ...

Global site tag (gtag.js) - Google Analytics