Java多线程编程-使用JDK1.6的线程池

Java对多线程的支持还是比较给力的,JDK1.6里面有现成的API可用,一般的多线程应用足够了,

使用的时候注意最好加一层壳子,至少方便日志打印和后续扩展,以下是一个简单的启用的例子

1. 定义线程池变量

//线程池维护线程的最少数量: 2;//线程池维护线程的最大数量: 100;//线程池维护线程所允许的空闲时间: 2s;//线程池维护线程所允许的空闲时间的单位: TimeUnit.SECONDS;

//线程池所使用的缓冲队列,队列大小为5//线程池对拒绝任务的处理策略:AbortPolicy为抛出异常;CallerRunsPolicy为重试添加当前的任务,会自动重复调用execute()方法;

ThreadPoolExecutor threadPool = new ThreadPoolExecutor(2, 100, 2, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(5), new ThreadPoolExecutor.DiscardOldestPolicy());

// 在相应的时机启动多个线程

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

 threadPool.execute(new ThreadPoolTask(param1,param2));

}

2. 线程池运行线程类,要implements Runnable, Serializable

public class ThreadPoolTask implements Runnable, Serializable {

private static final long serialVersionUID = 1L;

。。。。。

    public void run() {

。。。。。

}

}

时间: 2024-10-05 12:13:19

Java多线程编程-使用JDK1.6的线程池的相关文章

《Java并发编程实战》第八章 线程池的使用 读书笔记

一.在任务与执行策略之间的隐性解耦 有些类型的任务需要明确地指定执行策略,包括: . 依赖性任务.依赖关系对执行策略造成约束,需要注意活跃性问题.要求线程池足够大,确保任务都能放入. . 使用线程封闭机制的任务.需要串行执行. . 对响应时间敏感的任务. . 使用ThreadLocal的任务. 1. 线程饥饿死锁 线程池中如果所有正在执行任务的线程都由于等待其他仍处于工作队列中的任务而阻塞,这种现象称为线程饥饿死锁. 2. 运行时间较长的任务 Java提供了限时版本与无限时版本.例如Thread

Java多线程与并发库高级应用-线程池

线程池 线程池的思想  线程池的概念与Executors类的应用 > 创建固定大小的线程池 > 创建缓存线程池 > 创建单一线程池(如何实现线程死掉后重新启动?) 关闭线程池 > shutdown 与 shutdownNow的比较 用线程池启动定时器 > 调用ScheduleExecutorService 的 schedule 方法,返回的ScheduleFuture对象可以取消任务. > 支持间隔重复任务的定时方式,不直接支持决定定时的方法,需要转换成相对时间方式.

深入浅出Java并发编程(一):线程池的使用

我们在使用线程的时候就去建立一个线程,这样实现起来非常简便,但是会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间段很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率. 那么如何解决此类问题呢? 在Java中可以通过线程池来解决这样的效果.前面有文章简单提到过线程池的使用.今天我们来详细讲解下Java的线程池,由易而难,循序渐进,步骤如下: 首先我们从最核心的ThreadPoolExecutor类的方法讲起 然后讲述它的实现原理 接着给出了相应的示例 最后我们讨论下如何

Java多线程编程核心技术读书笔记(3)-线程通信

线程是操作系统中独立的个体,但是这些个体如果无法经过特殊的处理就不能成为一个整体.线程间通信可以实现线程间的信息互换.相互唤起等功能,是系统的交互性更加强大,大大提高CPU的利用率,同时还能让开发者对各个线程任务有清晰的把控和监督,最常用的线程通信方法就是--等待/通知机制. 一.等待/通知机制 1.wait() / notify() 等待/通知机制在生活中比比皆是,例如:厨师/服务员的菜品传递台.生产者/消费者模式,JDK中通过Object里面的两个方法 wait() / notify() 来

《java多线程编程核心技术》----simpleDateFormat非线程安全

类simpleDateFormat主要负责日期的转换和格式化,但在多线程的环境中,使用此内容容易造成数据转换以及处理的不准确, 因为simpleDateFormat类并不是线程安全的. public class MyThread extends Thread { private SimpleDateFormat sdf; private String dateString; public MyThread(SimpleDateFormat sdf, String dateString) { su

深入浅出java多线程编程

本文将从以下几个方面描述java多线程编程相关的内容. 线程简介 线程的状态与上下文切换的概念 线程的监控 synchronize和volatile 多线程的优点和缺点 多线程的设计模式 线程池 线程简介 进程代表运行中的程序.一个运行的java程序就是一个进程. 从操作系统的角度来看,线程是进程中可独立执行的子任务.一个进程可以包含多个线程,同一个进程中的线程共享该进程所申请到的资源,如内存空间和文件句柄等. 从JVM的角度来看,线程是进程中的一个组件,它可以看作执行java代码的最小单位.

Java多线程编程基础之线程对象

在进入java平台的线程对象之前,基于基础篇(一)的一些问题,我先插入两个基本概念. [线程的并发与并行] 在单CPU系统中,系统调度在某一时刻只能让一个线程运行,虽然这种调试机制有多种形式(大多数是时间片轮巡为主),但无论如何,要通过不断切换需要运行的线程让其运行的方式就叫并发(concurrent).而在多CPU系统中,可以让两个以上的线程同时运行,这种可以同时让两个以上线程同时运行的方式叫做并行(parallel). 在上面包括以后的所有论述中,请各位朋友谅解,我无法用最准确的词语来定义储

java多线程编程(1) 线程的基本知识

在前面研究过多线程与进程的区别. 这里在稍微总结一下: 进程:程序动态的一次执行过程. 线程:可以只是程序员的一部分的执行过程 每个进程有多个线程组成,在java程序中,至少两个线程一个是垃圾回收线程和main线程. 线程占有的资源更少,早java中就是每个线程都有自己的工作区,就是有自己独立的栈空间.多个线程共享一些内存资源,堆是共享的. 多线程的力度小,并发度高,这样系统的吞吐量就很大,只有好处吗?调度和执行线程是需要资源的,就是像是数据库中的索引和数据库中的锁一个道理,并发会带来什么问题呢

汪大神Java多线程编程实战

课程目录:├─1│  ├─Java并发编程.png│  ├─源码+ppt.rar│  ├─高并发编程第一阶段01讲.课程大纲及主要内容介绍.wmv│  ├─高并发编程第一阶段02讲.简单介绍什么是线程.wmv│  ├─高并发编程第一阶段03讲.创建并启动线程.mp4│  ├─高并发编程第一阶段04讲.线程生命周期以及start方法源码剖析.mp4│  ├─高并发编程第一阶段05讲.采用多线程方式模拟银行排队叫号.mp4│  ├─高并发编程第一阶段06讲.用Runnable接口将线程的逻辑执行单元