package javabasis;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/**
* 项目名称:svn
* 类名称:MoreThread
* 类描述:线程池
* 创建人:qian.long
* 创建时间:2011-9-13 上午09:57:28
* 修改人:qian.long
* 修改时间:2011-9-13 上午09:57:28
* 修改备注:
* @version
*/
public class MoreThread {
public static void main(String[] args) {
BlockingQueue<Runnable> bqueue = new ArrayBlockingQueue<Runnable>(20);
ThreadPoolExecutor pool = new ThreadPoolExecutor(20, 1000, 50, TimeUnit.MILLISECONDS, bqueue);
Thread t1 = new Mytyread();
Thread t2 = new Mytyread();
Thread t3 = new Mytyread();
Thread t4 = new Mytyread();
Thread t5 = new Mytyread();
Thread t6 = new Mytyread();
Thread t7 = new Mytyread();
//将线程放入池中进行执行
pool.execute(t1);
pool.execute(t2);
pool.execute(t3);
pool.execute(t4);
pool.execute(t5);
pool.execute(t6);
pool.execute(t7);
//关闭线程池
pool.shutdown();
}
public static void test() {
//创建等待队列
BlockingQueue<Runnable> bqueue = new ArrayBlockingQueue<Runnable>(20);
//创建一个单线程执行程序,它可安排在给定延迟后运行命令或者定期地执行。
ThreadPoolExecutor pool = new ThreadPoolExecutor(20, 1000, 50, TimeUnit.MILLISECONDS, bqueue);
//创建实现了Runnable接口对象,Thread对象当然也实现了Runnable接口
Thread t1 = new MyThread();
Thread t2 = new MyThread();
Thread t3 = new MyThread();
Thread t4 = new MyThread();
Thread t5 = new MyThread();
Thread t6 = new MyThread();
Thread t7 = new MyThread();
//将线程放入池中进行执行
pool.execute(t1);
pool.execute(t2);
pool.execute(t3);
pool.execute(t4);
pool.execute(t5);
pool.execute(t6);
pool.execute(t7);
//关闭线程池
pool.shutdown();
}
}
class Mytyread extends Thread {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + ":MoreThread.test()正在进行中.....");
MoreThread.test();
try {
Thread.sleep(100L);
} catch (Exception e) {
e.printStackTrace();
}
}
}
class MyThread extends Thread {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "正在进行中.....");
if("pool-4-thread-7".equals(Thread.currentThread().getName())) {
try {
throw new Exception("------");
} catch (Exception e) {
e.printStackTrace();
}
}
try {
Thread.sleep(100L);
} catch (Exception e) {
e.printStackTrace();
}
}
}
//用给定的初始参数和默认的线程工厂及处理程序创建新的 ThreadPoolExecutor。
//使用 Executors 工厂方法之一比使用此通用构造方法方便得多。
//参数:
//corePoolSize - 池中所保存的线程数,包括空闲线程。
//maximumPoolSize - 池中允许的最大线程数。
//keepAliveTime - 当线程数大于核心时,此为终止前多余的空闲线程等待新任务的最长时间。
//unit - keepAliveTime 参数的时间单位。
//workQueue - 执行前用于保持任务的队列。此队列仅保持由 execute 方法提交的 Runnable 任务。
//抛出:
//IllegalArgumentException - 如果 corePoolSize 或 keepAliveTime 小于零,
//或者 maximumPoolSize 小于或等于零,或者 corePoolSize 大于 maximumPoolSize。
//NullPointerException - 如果 workQueue 为 null
分享到:
相关推荐
Java多线程是Java编程语言中一个非常重要的概念,它允许开发者在一个程序中创建多个执行线程并行运行,以提高程序的执行效率和响应速度。在Java中,线程的生命周期包含五个基本状态,分别是新建状态(New)、就绪...
### Java多线程操作数据库:深入解析与应用 在当今高度并发的应用环境中,Java多线程技术被广泛应用于处理数据库操作,以提升系统的响应速度和处理能力。本文将基于一个具体的Java多线程操作数据库的应用程序,深入...
Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式...
Java多线程是Java编程中的重要概念,它允许程序同时执行多个任务,极大地提升了程序的效率和性能。在Java中,实现多线程有两种主要方式:通过实现Runnable接口或者继承Thread类。本案例将深入探讨Java多线程中的关键...
Java多线程是Java编程中的一个重要概念,它允许程序同时执行多个任务,提高了程序的效率和响应速度。在Java中,实现多线程有两种主要方式:继承Thread类和实现Runnable接口。 1. 继承Thread类: 当我们创建一个新...
Java多线程是Java编程中的重要概念,尤其在如今的多核处理器环境下,理解并熟练掌握多线程技术对于提高程序性能和响应速度至关重要。本资料详细讲解了Java多线程的原理,并提供了丰富的实战代码,非常适合Java初学者...