`

线程全部结束与集合点

    博客分类:
  • jdk
 
阅读更多

final int size = 50;

final CountDownLatch countDown = new CountDownLatch(size);//执行计数
final CyclicBarrier barrier = new CyclicBarrier(size);    //集合点
ExecutorService exec = Executors.newFixedThreadPool(size);   

long start = System.currentTimeMillis();

for(int index=1; index <= size; index++ ){ 
			 
    final int indexCopy = index;   
    Runnable run = new Runnable() {   
        public void run() {   
            try {   
                    System.out.println(indexCopy+"号就绪!");   
                    barrier.await();//等待所有线程集合   
                    System.out.println(indexCopy+"号开始执行!");   
            } catch (Exception e) {   
                    e.printStackTrace();   
            }   
            finally{   
                countDown.countDown();//释放   
            }   
        }   
    };   
    exec.execute(run);      
}     
countDown.await();//等待线程完成   
exec.shutdown();    
//统计时间   

System.out.println("结束时间:"+sdf.format(endDate));  

分享到:
评论

相关推荐

    Jmeter集合点.docx

    JMeter中的集合点,也称为同步定时器(Synchronizing Timer),允许你设置一个阈值,当达到该阈值的线程(即并发用户)聚集时,所有线程将同时发送请求,以此来模拟真实世界中的并发行为。 首先,了解如何使用CSV ...

    Java多线程知识点总结

    死亡状态则是线程的生命周期结束,可能是因为线程任务执行完毕或因异常情况退出。 在Java中,创建线程有几种常见的方式。第一种是通过继承Thread类并重写run方法来定义新的线程类。当创建此类的对象时,实际上就...

    java多线程面试题59题集合

    以下是对Java多线程面试题59题集合中可能涉及的一些关键知识点的详细解析。 1. **线程的创建方式** - 继承Thread类:创建一个新的类,该类继承自Thread类,并重写其run()方法。 - 实现Runnable接口:创建一个实现...

    JAVA中的线程知识点整理

    - **守护线程**:通过`Thread.setDaemon(true)`将线程标记为守护线程,守护线程在所有非守护线程结束后自动终止。一般用于后台服务,如垃圾回收。 6. **线程同步与通信** - **同步**:使用`synchronized`关键字...

    Java多线程编程全部源码

    6. **守护线程(Daemon Thread)**:用于为其他线程提供服务,当所有非守护线程结束时,程序会自动结束,即使仍有守护线程在运行。 7. **线程池**:通过`ExecutorService`和`ThreadPoolExecutor`管理线程,提高系统...

    易语言类中启动线程

    线程结束条件 = .真 .结束循环 .否则 ; 在这里执行线程任务 .结束循环 .结束线程 .主程序 .线程 对象 .创建线程 (.线程函数) .线程.启动 .等待线程 (.线程) ``` 以上代码创建了一个简单的线程,在类中定义...

    通过Thread建立线程

    `Join`方法可用于等待线程结束。 8. **线程池**:为了提高效率,C#提供了线程池。线程池中的线程可以重复使用,减少了创建和销毁线程的开销。`ThreadPool.QueueUserWorkItem`方法用于将工作项添加到线程池。 9. **...

    多线程面试题

    10. **守护线程(Daemon)**:守护线程是一种特殊的线程,当所有非守护线程结束时,守护线程会自动结束。典型的守护线程如JVM的垃圾收集器。 11. **线程安全**:线程安全的类或方法可以在多线程环境中被正确使用,...

    java多线程的讲解和实战

    8. **并发集合类**:Java提供了并发安全的集合类,如`ConcurrentHashMap`, `CopyOnWriteArrayList`, `BlockingQueue`等,它们内部实现了线程安全的算法,可以在多线程环境下高效使用。 9. **线程中断**:`interrupt...

    java多线程详解

    #### 知识点一:线程与进程的区别 在深入探讨Java多线程之前,我们首先需要理解线程与进程的基本概念及其区别。进程是资源分配的基本单位,拥有独立的内存空间,而线程则是进程内的执行单元,共享所属进程的内存...

    精通java多线程

    守护线程(Daemon Thread)是一种特殊的线程,当所有非守护线程结束时,程序会自动结束,即使还有守护线程在运行。Java的Thread类的setDaemon()方法可以将线程设置为守护线程。 八、线程池 Java的ExecutorService和...

    C# 多线程汇总

    - **等待线程结束**:可以使用`Thread.Join`方法来等待一个线程结束。 #### 五、示例代码分析 根据提供的部分代码示例,我们可以进一步了解如何在C#中使用多线程: ```csharp public class Alpha { public void ...

    java多线程设计模式_java_设计模式_多线程_多线程课题_

    守护线程在所有用户线程结束后自动终止,常用于后台服务,如垃圾回收。通过调用Thread.setDaemon(true)方法,可以将线程设置为守护线程。 八、线程安全的集合 Java提供了一些线程安全的集合类,如ConcurrentHashMap...

    VB6.0 多线程 实验成功

    在VB6.0中实现多线程是一项挑战,但通过本次实验,我们成功地...总的来说,这个实验成功地展示了VB6.0中多线程的实现,涵盖了线程创建、同步、通信和管理等多个关键点,对于理解和掌握多线程编程具有重要的实践意义。

    C#.NET多线程实例6个(包括多线程基本使用,多线程互斥等全部多线程使用实例)(201903)

    7. **线程安全的数据结构**:`System.Collections.Concurrent`命名空间提供了线程安全的集合,如`ConcurrentQueue`、`ConcurrentStack`和`ConcurrentDictionary`等,它们内部实现了线程同步,无需额外的同步代码即可...

    C#多线程demo

    - **后台线程与前台线程**:默认创建的线程是前台线程,当所有前台线程结束时,程序才会终止。后台线程则不会阻止程序退出,适用于非关键任务。 3. **线程同步与互斥**: - `Mutex`、`Semaphore`和`Monitor`等类...

    Pthreads Programming久负盛名的Linux刷线程书籍集合

    Pthreads库提供了一系列函数,如`pthread_create()`用于创建新线程,`pthread_join()`等待线程结束,`pthread_mutex_*`家族函数用于互斥锁,以及`pthread_cond_*`函数用于条件变量等。 在Linux环境中,Pthreads被...

    Java多线程练习题

    2.守护线程(Daemon Thread):后台运行的线程,当所有非守护线程结束时,守护线程也会自动结束。 六、线程池 Java提供ExecutorService和ThreadPoolExecutor来管理线程,可以避免频繁创建和销毁线程带来的开销,...

    Java多线程-多线程知识点总结和企业真题

    - 守护线程是为了服务用户线程而存在的,当用户线程结束时,守护线程也会自动结束。 - **题5**:解释`join()`方法的作用。 - `join()`方法使当前线程等待另一个线程结束。 3. **常用方法、生命周期** - **题1**...

    JAVA-多线程 所有文件

    10. **Join方法**:`join()`方法使当前线程等待指定线程结束后再继续执行,常用于线程间的协作。 11. **线程中断**:通过`interrupt()`方法可以中断一个线程,但需要注意中断只是个标志,线程可能需要检查并响应...

Global site tag (gtag.js) - Google Analytics