Java多线程使用

简介: Java多线程使用

什么是线程


     是操作系统能够进行运算调度的最小单位。(例如: cpu 对前端发往后端的一个请求的处理叫一个线程)


什么是线程池


线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。


关于这个线程池的概念,之前接触过相关的内容是sql连接池,这个是比较相近的内容,都是提前创建好连接对象,供程序使用。相当于是把每次创建这件事情前置,后续使用就特别方便,而且连接对象易于管理。


线程池的优势


降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗;

提高系统响应速度,当有任务到达时,无需等待新线程的创建便能立即执行;

方便线程并发数的管控,线程若是无限制的创建,不仅会额外消耗大量系统资源,更是占用过多资源而阻塞系统或oom等状况,从而降低系统的稳定性。线程池能有效管控线程,统一分配、调优,提供资源使用率;


更强大的功能,线程池提供了定时、定期以及可控线程数等功能的线程池,使用方便简单。


学习demo,这里用的是FixedThreadPool线程池这种线程池应用于处理的任务固定。

public class ThreadDemo implements Runnable {
    //锁存器
    CountDownLatch latch;
    public ThreadDemo(CountDownLatch latch){
        this.latch=latch;
    }
    @Override
    public void run() {
        try {
            testDemo();
            latch.countDown();
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }
    private void testDemo() throws InterruptedException {
        sleep(100);
        System.out.println("这是线程id"+Thread.currentThread().getId());
    }
}
public class Demo01 {
    static void test() throws InterruptedException {
        ExecutorService excutorService = Executors.newFixedThreadPool(50);
        final CountDownLatch latch=new CountDownLatch(100);
        for (int i = 0; i < 100; i++) {
            excutorService.submit(new ThreadDemo( latch));
        }
        try{
            latch.await();
        }catch (Exception e){
        }
        excutorService.shutdown();
    }
    public static void main(String[] args) throws InterruptedException {
        long startTime=System.currentTimeMillis();
        test();
        long endTime=System.currentTimeMillis();
        System.out.println("程序运行时间: "+(endTime-startTime)+"ms");
    }
}
相关文章
|
21天前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
Java 数据库 Spring
59 0
|
1月前
|
算法 Java
Java多线程编程:实现线程间数据共享机制
以上就是Java中几种主要处理多线程序列化资源以及协调各自独立运行但需相互配合以完成任务threads 的技术手段与策略。正确应用上述技术将大大增强你程序稳定性与效率同时也降低bug出现率因此深刻理解每项技术背后理论至关重要.
90 16
|
2月前
|
缓存 并行计算 安全
关于Java多线程详解
本文深入讲解Java多线程编程,涵盖基础概念、线程创建与管理、同步机制、并发工具类、线程池、线程安全集合、实战案例及常见问题解决方案,助你掌握高性能并发编程技巧,应对多线程开发中的挑战。
|
2月前
|
数据采集 存储 前端开发
Java爬虫性能优化:多线程抓取JSP动态数据实践
Java爬虫性能优化:多线程抓取JSP动态数据实践
|
3月前
|
Java API 调度
从阻塞到畅通:Java虚拟线程开启并发新纪元
从阻塞到畅通:Java虚拟线程开启并发新纪元
309 83
|
3月前
|
安全 算法 Java
Java 多线程:线程安全与同步控制的深度解析
本文介绍了 Java 多线程开发的关键技术,涵盖线程的创建与启动、线程安全问题及其解决方案,包括 synchronized 关键字、原子类和线程间通信机制。通过示例代码讲解了多线程编程中的常见问题与优化方法,帮助开发者提升程序性能与稳定性。
145 0
|
3月前
|
存储 Java 调度
Java虚拟线程:轻量级并发的革命性突破
Java虚拟线程:轻量级并发的革命性突破
263 83
|
4月前
|
移动开发 Java
说一说 Java 是如何实现线程间通信
我是小假 期待与你的下一次相遇 ~