编写多线程代码时,启动线程后等待线程结束方法

摘要:
在编写多线程代码时,如果主线程结束,那么子线程也将结束。如何等待线程结束,然后执行。

在编写多线程代码时,如果主线程结束,那么子线程也会随之结束,如何等待线程结束再往下执行。

 

等待线程执行完成代码。

 

线程代码:

 

package demo;

import java.util.concurrent.CountDownLatch;

public class NodeSqlThread1 implements Runnable{
   
    private CountDownLatch cdlSync;
   
    public NodeSqlThread1(CountDownLatch cdlSync){
        this.cdlSync=cdlSync;
    }
   

    @Override
    public void run() {
        for(int i=0;i<100;i++){
            try {
                Thread.sleep(50);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        cdlSync.countDown();
    }
   
   
}

 

package demo;

import java.util.concurrent.CountDownLatch;

import com.hotent.BaseTestCase;

public class NodeSqlTest1 extends BaseTestCase {

    static CountDownLatch cdlSync=new CountDownLatch(10);
   
    @org.junit.Test
    public void test() throws InterruptedException{
        NodeSqlThread1 t =new NodeSqlThread1(cdlSync);
        for(int i =0;i< 10;i++){
            new Thread(t).start();
        }
        cdlSync.await();
        System.out.println(cdlSync.getCount()+"完成");
    }

}

最重要的是  cdlSync.await(); 它会等待所有线程结束后继续往下执行。

免责声明:文章转载自《编写多线程代码时,启动线程后等待线程结束方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)代码3mongoDB的文档查询下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

.NET应用程序7种最常见的性能问题及其解决方案

译者注:这篇文章依然是介绍.NET Framework框架下的性能问题排查,可能并不直接适用于.NET Core,但有时也能提供一些参考。   .NET应用程序7种最常见的性能问题及其解决方案 原文地址:https://www.eginnovations.com/blog/top-7-net-application-performance-problems...

Android中AsyncTask的简单用法

转自:http://blog.csdn.net/cjjky/article/details/6684959 在开发Android移动客户端的时候往往要使用多线程来进行操作,我们通常会将耗时的操作放在单独的线程执行,避免其占用主线程而给用户带来不好的用户体验。但是在子线程中无法去操作主线程(UI 线程),在子线程中操作UI线程会出现错误。因此android提...

【转】CUDA程序优化要点

CUDA程序优化应该考虑的点:精度:只在关键步骤使用双精度,其他部分仍然使用单精度浮点以获得指令吞吐量和精度的平衡;    目前 GPU 的单精度性能要远远超过双精度性能,整数乘法、求模、求余等运算的指令吞吐量也较为有限。在科学计算中,由于需要处理的数据量巨大,往往采用双精度或者四精度才能获得可靠的结果,目前的 Tesla 架构还不能很好的满足高精度计算的...

Java中primitive type的线程安全性

Java中primite type,如char,integer,bool之类的,它们的读写操作都是atomic的,但是有几个例外: long和double类型不是atomic的,因为long和double都是8字节的,而在32位的CPU上,其机器字长为32位,操作8个字节需要多个指令操作。 ++i或者i++,因为要先读后写,也是多步操作。 这些情况下,...

单进程单线程的Redis如何能够高并发

1、基本原理 采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络IO的时间消耗) (1)为什么不采用多进程或多线程处理? 多线程处理可能涉及到锁 多线程处理会涉及到线程切换而消耗CPU (2)单线程处理的缺点? 无法发挥多核CPU性能,不过可以通过在单机开多个Redis实例来完善 2、Redis不存在线程安全问题? Redis采...

Python中的多线程编程,线程安全与锁(一)

1.多线程编程与线程安全相关重要概念 在我的上篇博文聊聊Python中的GIL中,我们熟悉了几个特别重要的概念:GIL,线程,进程,线程安全,原子操作。 以下是简单回顾,详细介绍请直接看聊聊Python中的GIL GIL:Global Interpreter Lock,全局解释器锁。为了解决多线程之间数据完整性和状态同步的问题,设计为在任意时刻只有一个...