`
nannan408
  • 浏览: 1783329 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

jdk5后并发线程优雅的创建方式ExecutorService+Callable比thread和runable两种方式简单和实用,可以替代后两者。

 
阅读更多
1.前言。
   如题。ExecutorService可用在并发创建rar包,并发多线程执行同一任务中
2.例子。
public void testCall() throws Exception{

       //声明一个类,可以被调用,类似于线程,但它可以拥有返回值

       class MyCall implements Callable<String>{

           private int seq;

           public MyCall(int seq){

              this.seq=seq;

           }

           //抛出异常并可以拥有返回值

           public String call() throws Exception {

              System.err.println("执行"+seq+","+Thread.currentThread().getName());

              Thread.sleep(3000);

              System.err.println("Weak up "+seq);

              return "完成"+seq;//这是返回值

           }

       }

       ExecutorService es = Executors.newCachedThreadPool();//创建线程池对象

       List<Future<String>> result =new ArrayList<Future<String>>();//放结果用的集合

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

           Future<String> f=es.submit(new MyCall(i));//线程执行完成以后可以通过引用获取返回值

           result.add(f);

       }

       for(Future<String> f:result){

           System.err.println("返回值:"+f.get());//输出返回的值

       }

       System.err.println("完成....");

    }



3.需要注意的。
   (1)Executors的多线程是不分先后的,Callable类似Thread,是扩展的线程的意思,虚拟机上面Executors创建的线程是可以看到的。
   (2)callable比run好是因为可以有返回值和抛出异常。
   (3)可以减少代码量,同类型多线程操作不需要再用信号量来互相通知,操作完可以用return通知。
 
分享到:
评论

相关推荐

    详解JDK中ExecutorService与Callable和Future对线程的支持

    Java并发编程中的ExecutorService、Callable和Future Java并发编程中,ExecutorService、Callable和Future是三大核心组件,它们之间紧密相连,共同实现了高效、安全的并发编程。下面我们将详细介绍这些组件的作用和...

    JDK5中的多线程并发库.doc

    - **创建线程**:有两种主要方式,一是继承`Thread`类,重写`run()`方法,然后创建对象调用`start()`;二是实现`Runnable`接口,同样重写`run()`方法,然后将实现类的实例传入`Thread`构造函数,通过`Thread`启动。...

    Java多线程-JDK5.0新增线程创建方式

    ### Java多线程-JDK5.0新增线程创建方式 #### 一、新增方式1:实现Callable接口 ##### (1)介绍 自Java 5.0起,为提高线程管理的灵活性与效率,引入了`Callable`接口,这是一种全新的创建线程的方式。与传统的`...

    JDK5中的并发(多线程)

    JDK 5.0 是用 Java 语言创建高可伸缩的并发... &lt;br&gt;本教程将介绍 JDK 5.0 提供的用于并发的新实用程序类,并通过与现有并发原语(synchronized、wait() 和 notify())相比较,说明这些类如何提高了可伸缩性。

    JDK5中的多线程并发库

    - **创建线程方式**:有两种主要方式创建线程,一是继承`Thread`类,重写`run()`方法,然后实例化并调用`start()`;二是实现`Runnable`接口,同样重写`run()`,然后创建`Thread`对象并将其传递给构造函数,通过`...

    jdk1.5 线程并发与线程池的使用

    在JDK 1.5之前,Java主要依赖于Thread类来创建和管理线程,但这种方式存在一定的局限性,如线程同步问题、资源管理不善等。JDK 1.5引入了`java.util.concurrent`包,提供了许多高级并发工具,如`ExecutorService`、`...

    jdk1.5并发新特性.

    这些并发新特性使得在 JDK 1.5 中编写多线程程序变得更加简单和高效,减少了锁竞争,提高了并发性能,并降低了死锁和数据不一致的风险。通过熟练掌握这些工具,开发者可以更好地应对复杂的并发场景,构建健壮的并发...

    在Java中创建线程有两种方法

    Java提供了两种主要的方法来创建线程,分别是直接继承自`Thread`类和实现`Runnable`接口。这两种方法各有其特点和适用场景。 1. **继承Thread类**: 当你选择继承`Thread`类时,你需要创建一个新的类,该类直接...

    张孝祥Java多线程与并发库高级应用笔记

    - **JDK1.5线程并发库**:引入了更高级的并发控制机制,如`ExecutorService`、`Callable`、`Future`等,提供了更安全、更高效的多线程解决方案,减少了线程同步和死锁的风险。 ##### 2. 创建线程的两种传统方式 - ...

    最常用和实用的JDK内存和线程监控指令

    最常用和实用的JDK内存和线程监控指令,堆栈监控指令及操作步骤

    Java各种入门知识重点

    并发编程+多线程+反射+泛型+集合+密码加密+数据结构+正则匹配+注解java系统操作+JDK版本控制+JMM内存模型+服务器+进制+限流算法并发编程+多线程+反射+泛型+集合+密码加密+数据结构+正则匹配+注解java系统操作+JDK...

    jdk5.zip

    例如,ExecutorService和Future接口提供了异步执行任务的能力,而ConcurrentHashMap则是一种线程安全的高效哈希表。 除此之外,JDK 5对Java语言的一些底层机制进行了优化,比如在内存模型(Memory Model)上进行了...

    java多线程.pdf

    在Java中,实现多线程主要有两种方式:继承Thread类和实现Runnable接口。 1. 继承Thread类: - 当你定义一个类继承自Thread类时,你需要重写`run()`方法,这个方法包含了线程执行的具体逻辑。 - 创建Thread子类...

    JDK21虚拟线程详解.pptx.pptx

    总结,JDK21的虚拟线程是一种革命性的并发处理技术,它通过协程实现了轻量级线程,降低了并发编程的复杂性,提高了程序的执行效率,尤其是在IO密集型任务中展现出巨大的潜力。开发者应了解其工作原理和特性,以便在...

    多线程并发技术

    在现代软件开发中,多线程并发技术是提高程序性能和响应速度的关键因素之一。随着计算机硬件的性能持续提升,程序也必须能够有效地利用多核处理器来实现真正的并行处理。JVM(Java虚拟机)作为Java应用程序的运行...

    经典Java多线程与并发库高级应用

    在Java中创建线程有两种传统方式,一种是通过继承Thread类并覆盖其run方法来创建线程;另一种是通过传递实现了Runnable接口的对象给Thread类的构造函数来创建线程。在两种方式中,run方法的调用最终都会调用到Thread...

    深入理解高并发编程-核心技术原理

    Java中实现线程的三种方式包括继承Thread类、实现Runnable接口以及实现Callable接口。书中还特别提及了线程池的创建和管理,以及通过ThreadPoolExecutor类的源码分析,揭示线程池的工作原理。 在**基础案例篇**,...

    Multi person chat_jdk1.8_java编程_

    3. **使用ExecutorService和Callable接口**:JDK 1.5引入的Executor框架允许更高级别的线程管理。Callable接口与Runnable类似,但可以返回结果。使用ExecutorService可以创建线程池,有效管理线程生命周期,提高性能...

    JDK 5.0.zip

    7. **内建的并发工具类**:JDK 5.0引入了`java.util.concurrent`包,包含了许多线程安全的数据结构和并发工具,如`ExecutorService`、`Semaphore`、`Future`等,极大地简化了多线程编程。 8. **NIO.2(New I/O API...

Global site tag (gtag.js) - Google Analytics