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

java在for循环中使用concurrent包进行多线程编程

阅读更多

  最近在做接口的时候总是遇到一个for语句中 每次循环会涉及很多资源,包括 ftp io db,总想用现场来控制太.找到一篇文章  http://daoger.iteye.com/blog/142485 写的不错.自己写了2个demo

1. 主线程不等待

 public class CopyOfTestThreadPool {
 public static void main(String args[]) throws InterruptedException {
  // only two threads

  ExecutorService exec = Executors.newFixedThreadPool(20);
  List<Long> list = new ArrayList<Long>();
  for(int index = 0; index < 1000000; index++){
   list.add(System.nanoTime());
  }
  
  long start = System.currentTimeMillis();
  for (Long long1 : list) {
   final Long l = long1;
   exec.execute(new Runnable(){

    public void run() {
     System.out.println(l);
     try {
      Thread.sleep(5000);
     } catch (InterruptedException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
     
    }});
  }
  // must shutdown
  exec.shutdown();
   long end = System.currentTimeMillis();
   System.out.print("共计用时 ");
   System.out.println(end  - start);
 }
}

2 主线程会等待

public class TestCountDownLatch {
 public static void main(String[] args) throws InterruptedException {
  long start = System.currentTimeMillis();
  // 开始的倒数锁
  final CountDownLatch begin = new CountDownLatch(1);
  // 结束的倒数锁
  final CountDownLatch end = new CountDownLatch(10000);
  // 十名选手
  final ExecutorService exec = Executors.newFixedThreadPool(10);
  for (int index = 0; index < 10000; index++) {
   final int NO = index + 1;
   Runnable run = new Runnable() {
    public void run() {
     try {
      begin.await();
      Thread.sleep((long) (Math.random() *  10));
     } catch (InterruptedException e) {
     } finally {
      end.countDown();
     }
    }
   };
   exec.submit(run);
  }
  System.out.println("Game Start");
  begin.countDown();
  end.await();
  System.out.println("Game Over");
  exec.shutdown();
   System.out.print("共计用时 ");
   System.out.println(System.currentTimeMillis()  - start);
 }
}

 

详细看上面那位老兄的blog

分享到:
评论

相关推荐

    JAVA多线程编程技术PDF

    Java提供了wait(), notify()和notifyAll()方法,这些方法用于在线程间交换信息,但必须在同步块中使用,以防止死锁和其他并发问题。此外,还有java.util.concurrent工具包,包含如BlockingQueue等高级并发结构,它们...

    Java多线程编程

    Java多线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在Java中,多线程主要通过`Thread`类和并发工具来实现,接下来我们将深入探讨这些关键知识点。 1. **...

    java 多线程编程指南

    总之,“Java多线程编程指南”将涵盖这些核心概念,并可能深入到高级话题,如线程池的优化、并发容器的使用以及并发编程的最佳实践,帮助读者提升在多线程环境下的编程能力。通过深入学习和实践,开发者能够构建出...

    Java多线程编程核心技术_完整版_java_

    Java多线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在Java中,多线程主要通过继承Thread类或实现Runnable接口来实现。本教程《Java多线程编程核心技术》将...

    java多线程编程(第二版)

    Java多线程编程是Java开发中的重要组成部分,尤其在当今并发处理需求日益增长的时代,对多线程的理解和掌握显得尤为重要。《Java多线程编程(第二版)》这本书深入探讨了这一主题,旨在帮助开发者更好地理解和应用...

    java多线程查询数据库

    在Java编程中,多线程查询数据库是一种常见的优化策略,特别是在处理大数据量或者需要并行执行多个查询时。本文将详细探讨如何利用Java的多线程技术和线程池来实现并发查询数据库,以及相关的文件`BatchDataUtil....

    Java多线程编程模板

    本知识点将深入探讨Java多线程编程模板,帮助开发者理解和掌握如何在Java中创建、管理和同步线程。 一、线程的创建 在Java中,有两种主要的线程创建方式: 1. 继承Thread类:创建一个新的类,该类继承自Thread类,...

    Java数组,Java数组,多线程编程

    Java数组是程序设计中的基本构建块,它允许程序员存储多个相同类型的数据在一个...以上就是关于Java数组、Java环境配置以及Java多线程编程的相关知识点。掌握这些内容,可以帮助开发者编写更高效、更健壮的Java程序。

    Java 多线程编程详解.pdf

    Java多线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在Java中,多线程主要通过继承Thread类或实现Runnable接口来实现。本PDF文档详细讲解了Java多线程的相关...

    Java多线程编辑核心技术

    Java的并发包java.util.concurrent是Java多线程编程中的重要组成部分,它提供了比原生的java.lang.Thread类和synchronized关键字更高级的并发工具。比如,它提供了线程池的实现(如ExecutorService和...

    多线程编程的入门指导(英文版)

    在进行多线程编程时,还需要考虑异常处理和线程生命周期管理。线程可能因为各种原因抛出异常,必须确保这些异常能够被正确捕获和处理,以免程序崩溃。同时,当线程完成任务或者遇到错误时,应当及时停止线程,释放...

    Java多线程编程线程的协同、停止、暂停、继续等操作实现

    本篇文章将深入探讨如何实现线程的协同、停止、暂停以及继续等操作,这些都是多线程编程中的核心概念。 1. **线程的协同(协作式线程调度)** 在Java中,线程的协同主要通过`wait()`和`notify()`或`notifyAll()`...

    多线程concurrent的用例

    这个"多线程concurrent的用例"压缩包中很可能包含了一些示例代码,帮助我们理解和实践如何在Java中使用这些并发工具。 在Java中,创建线程主要有两种方式:继承`Thread`类和实现`Runnable`接口。`concurrent`包提供...

    Java多线程编程的Java中的线程.docx

    在Java中,多线程编程可以通过直接操作`java.lang.Thread`类或实现`Runnable`接口实现。 2. 使用多线程的原因:现代计算机硬件通常具备多核处理器,多线程能充分利用硬件资源,提高程序响应速度和并发处理能力。 三...

    Java多线程编程总结

    Java多线程编程的核心在于理解和利用操作系统中的线程和进程概念。**进程**是系统进行资源分配和调度的基本单位,每个进程拥有独立的内存空间。而**线程**则是进程中的执行流程,它们共享所属进程的内存资源,这使得...

    多线程编程学习资料收集

    在Java中,多线程不仅提供了并发性,还能有效地利用CPU资源,尤其在网络应用和高交互性的环境中,多线程编程显得尤为重要。 8.1.1 什么是多线程 多线程编程是指在一个程序中包含多个并发执行的代码流,即线程。线程...

    java 多线程编程 第三版

    《Java多线程编程》第三版是一本深入探讨Java并发编程的权威指南,旨在帮助开发者理解和掌握Java平台上的多线程技术。这本书详尽地介绍了如何有效地利用多核处理器的性能,以及如何在复杂的并发环境中设计和实现高效...

    Java 多线程与并发编程总结.doc

    此外,Java 5引入了`java.util.concurrent`包,包含如`ExecutorService`, `Future`, `Callable`, `Semaphore`, `CyclicBarrier`, `CountDownLatch`等高级并发工具类,这些工具极大地简化了多线程编程。 在并发编程...

    java弹球小游戏,多线程

    总的来说,Java弹球小游戏是一个很好的学习多线程编程的实际案例。它展示了如何在Java中创建和管理线程,如何处理用户输入,以及如何通过同步机制保证游戏逻辑的正确性。通过深入理解这个项目,开发者可以提升在实际...

Global site tag (gtag.js) - Google Analytics