`
shichuang2393
  • 浏览: 7459 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

java.util.concurrent.Executors 多线程

阅读更多
有关Java5线程新特征的内容全部在java.util.concurrent下面,里面包含数目众多的接口和类,熟悉这部分API特征是一项艰难的学习过程。下面和大家一起分享下我最近学习利用Executors创建线程池的三个方法:newCachedThreadPool,newFixedThreadPool(int nThreads) ,,newSingleThreadExecutor() 话不多说,下面写几个简单的demo;
1.newFixedThreadPool(int nThreads)方法(固定线程池的大小)

package com.thread
import java.util.concurrent.Executors;
import java.util.concurrent.ExecutorService;

/**
* Java线程:线程池-
*
* @author Administrator 2012-12-28
*/
public class Test {
        public static void main(String[] args) {
                //创建一个可重用固定线程数的线程池
                ExecutorService pool = Executors.newFixedThreadPool(2);
                //创建实现了Runnable接口对象,Thread对象当然也实现了Runnable接口
                Thread t1 = new MyThread();
                Thread t2 = new MyThread();
                Thread t3 = new MyThread();
                Thread t4 = new MyThread();
                Thread t5 = new MyThread();
                //将线程放入池中进行执行
                pool.execute(t1);
                pool.execute(t2);
                pool.execute(t3);
                pool.execute(t4);
                pool.execute(t5);
                //关闭线程池
                pool.shutdown();
        }
}

class MyThread extends Thread{
        @Override
        public void run() {
                System.out.println(Thread.currentThread().getName()+"正在执行。。。");
        }
}

运行的结果:
pool-1-thread-1正在执行。。。
pool-1-thread-1正在执行。。。
pool-1-thread-1正在执行。。。
pool-1-thread-1正在执行。。。
pool-1-thread-2正在执行。。。


2.newSingleThreadExecutor (单任务线程池)

package com.thread
import java.util.concurrent.Executors;
import java.util.concurrent.ExecutorService;

/**
* Java线程:线程池-
*
* @author Administrator 2012-12-28
*/
public class Test {
        public static void main(String[] args) {
                //创建一个可重用固定线程数的线程池
                ExecutorService pool = Executors.newSingleThreadExecutor();
                //创建实现了Runnable接口对象,Thread对象当然也实现了Runnable接口
                Thread t1 = new MyThread();
                Thread t2 = new MyThread();
                Thread t3 = new MyThread();
                Thread t4 = new MyThread();
                Thread t5 = new MyThread();
                //将线程放入池中进行执行
                pool.execute(t1);
                pool.execute(t2);
                pool.execute(t3);
                pool.execute(t4);
                pool.execute(t5);
                //关闭线程池
                pool.shutdown();
        }
}

class MyThread extends Thread{
        @Override
        public void run() {
                System.out.println(Thread.currentThread().getName()+"正在执行。。。");
        }
}

运行的结果:
pool-1-thread-1正在执行。。。
pool-1-thread-1正在执行。。。
pool-1-thread-1正在执行。。。
pool-1-thread-1正在执行。。。
pool-1-thread-1正在执行。。。

3.newCachedThreadPool(可变尺寸的线程池)

package com.thread
import java.util.concurrent.Executors;
import java.util.concurrent.ExecutorService;

/**
* Java线程:线程池-
*
* @author Administrator 2012-12-28
*/
public class Test {
        public static void main(String[] args) {
                //创建一个可重用固定线程数的线程池
                ExecutorService pool = Executors.newSingleThreadExecutor();
                //创建实现了Runnable接口对象,Thread对象当然也实现了Runnable接口
                Thread t1 = new MyThread();
                Thread t2 = new MyThread();
                Thread t3 = new MyThread();
                Thread t4 = new MyThread();
                Thread t5 = new MyThread();
                //将线程放入池中进行执行
                pool.execute(t1);
                pool.execute(t2);
                pool.execute(t3);
                pool.execute(t4);
                pool.execute(t5);
                //关闭线程池
                pool.shutdown();
        }
}

class MyThread extends Thread{
        @Override
        public void run() {
                System.out.println(Thread.currentThread().getName()+"正在执行。。。");
        }
}

运行结果:
pool-1-thread-5正在执行。。。
pool-1-thread-1正在执行。。。
pool-1-thread-4正在执行。。。
pool-1-thread-3正在执行。。。
pool-1-thread-2正在执行。。。

大家一起学习,希望各位大鸟在多线程处理方面提些意见
分享到:
评论
1 楼 stevinsj 2012-12-31  
很好的文章,很受启发!!!

相关推荐

    java.util.concurrent 学习ppt

    Java.util.concurrent是Java 5.0引入的一个重要包,它为多线程编程提供了一组高级并发工具。这个包的设计者是Doug Lea,它的出现是JSR-166的一部分,也被称作Tiger更新。Java.util.concurrent的引入是为了解决传统...

    java.util.concurrent介绍(重要).pdf

    总之,`java.util.concurrent` 提供的工具使得并发编程变得更加容易和高效,是 Java 并发编程的基石,无论是对于初学者还是经验丰富的开发者,理解和掌握这个包都是非常重要的。通过熟练运用这些工具,开发者可以...

    浅谈java.util.concurrent包中的线程池和消息队列

    java.util.concurrent包中的线程池和消息队列是一种高效的多线程编程技术,主要用于解决处理器单元内多个线程执行的问题。线程池技术可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。 1. 并发包介绍 ...

    java在服务启动的时候启动定时器

    import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; public class ScheduledExecutorExample { public static void main...

    java定时执行方法&节拍器

    import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; public class ScheduledExecutorExample { public static void main...

    java定时关机源码

    然而,`java.util.Timer`并不是线程安全的,因此在多线程环境中可能会出现问题。为了解决这个问题,Java 5引入了`java.util.concurrent.ScheduledExecutorService`。这个接口提供了更强大且线程安全的定时任务处理...

    java定时执行代码.

    import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; public class ScheduledExecutorExample { public static void main...

    SimpleDateFormat线程不安全的5种解决方案.docx

    import java.util.concurrent.Executors; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class SimpleDateFormatExample { private static SimpleDateFormat...

    java 实现调度器

    import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; public class ScheduledExecutorExample { public static void main...

    Java计时器

    import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; public class ScheduledExecutorServiceExample { public static void ...

    java 资源搜索并下载(线程等待和通报)

    import java.util.concurrent.Executors; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class ...

    Java5.0多线程编程实践.pdf

    总的来说,Java 5.0通过引入`java.util.concurrent`包,极大地丰富了Java的多线程编程能力,使得开发者能够在多线程环境下更加高效、安全地编写程序。上述知识点和示例展示了如何利用Java 5.0提供的并发工具,构建...

    java 写的定时器

    import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; public class ScheduledExecutorExample { public static void main...

    JAVA课程学习笔记.doc

    - `java.util.concurrent.Executors`:提供了一些静态工厂方法,用于创建不同类型的线程池实例,如 `newFixedThreadPool()`、`newSingleThreadExecutor()`。 - `java.util.concurrent.CompletionService`:允许获取...

    Java定时执行某个任务

    因此,在多线程和高并发环境中,推荐使用`java.util.concurrent`包中的`ScheduledExecutorService`。 `ScheduledExecutorService`提供了更强大的功能,如支持固定延迟执行、周期性执行以及精确到纳秒的调度。以下是...

    java获取压缩文件的名称并解压

    import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; public class MultiThreadedUnzipper { private static final int ...

    JAVA多线程框架.pdf

    线程池是Java多线程框架的核心组件,通过`java.util.concurrent.ExecutorService`接口和其子类实现。在示例代码中,`Executors.newFixedThreadPool(2)`创建了一个固定大小为2的线程池,这意味着线程池最多同时运行两...

    java线程安全总结.pdf

    7. 使用线程安全的集合:java.util.concurrent包中包含了许多线程安全的集合类,例如ConcurrentHashMap、CopyOnWriteArrayList、ConcurrentLinkedQueue等,它们可以在多线程环境下安全使用,无需额外的同步。...

    java定时器\多线程(池)\java队列Demo

    Java编程语言在处理并发任务和时间调度方面提供了丰富的工具,其中`java定时器`、`多线程(池)`和`java队列`是核心概念。让我们深入探讨这些主题。 ### 1. Java定时器(java.util.Timer) `java.util.Timer` 类允许...

Global site tag (gtag.js) - Google Analytics