Java 线程池的基本操作

这篇具有很好参考价值的文章主要介绍了Java 线程池的基本操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Java 线程池的基本操作

Java 线程池的基本操作,Java,java,python,开发语言
Java 线程池的基本操作,Java,java,python,开发语言
Java 线程池的基本操作,Java,java,python,开发语言

package com.zhong.thread.threadpool;

import java.util.concurrent.*;

/**
 * @ClassName : ThreadPool
 * @Description : 线程池的基本操作
 * @Author : zhx
 * @Date: 2024-02-19 18:03
 */
public class ThreadPool {
    public static void main(String[] args) {
        // 创建线程池对象
        ExecutorService pool = new ThreadPoolExecutor(3,
                5,
                8,
                TimeUnit.SECONDS,
                new ArrayBlockingQueue<>(4),
                Executors.defaultThreadFactory(),
                new ThreadPoolExecutor.AbortPolicy());

        Runnable r = new myRunnable();
        Thread t1 = new Thread(r);
        pool.execute(t1);  // 线程池会自动创建一个线程执行这个任务
        pool.execute(t1);  // 线程池会自动创建一个线程执行这个任务
        pool.execute(t1);  // 线程池会自动创建一个线程执行这个任务
        pool.execute(t1);  // 核心线程达到 3 服用前面的核心线程
        pool.execute(t1);  // 核心线程达到 3 服用前面的核心线程
        pool.execute(t1);

        // 等线程池任务执行完毕后关闭
        pool.shutdown();
        // 直接关闭 并 返回没有执行完的线程 会抛异常
        pool.shutdownNow();

    }
}
class myRunnable implements Runnable {
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName() + "  红红火火恍恍惚惚");
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }
}

Java 线程池的基本操作,Java,java,python,开发语言
Java 线程池的基本操作,Java,java,python,开发语言

package com.zhong.thread.threadpool;

import java.util.concurrent.*;

/**
 * @ClassName : ThreadPool
 * @Description : 线程池的基本操作
 * @Author : zhx
 * @Date: 2024-02-19 18:03
 */
public class ThreadPool {
    public static void main(String[] args) {
        // 创建线程池对象
        ExecutorService pool = new ThreadPoolExecutor(3,
                5,
                8,
                TimeUnit.SECONDS,
                new ArrayBlockingQueue<>(4),
                Executors.defaultThreadFactory(),
                new ThreadPoolExecutor.AbortPolicy());

        Runnable r = new myRunnable();
        Thread t1 = new Thread(r);
        pool.execute(t1);  // 线程池会自动创建一个线程执行这个任务
        pool.execute(t1);  // 线程池会自动创建一个线程执行这个任务
        pool.execute(t1);  // 线程池会自动创建一个线程执行这个任务
        pool.execute(t1);  // 核心线程达到 3 复用前面的核心线程
        pool.execute(t1);  // 核心线程达到 3 复用前面的核心线程
        pool.execute(t1);
        pool.execute(t1);
        pool.execute(t1);   // 超过最大线程队伍队列 8>4+3 创建新的线程池 现在一共有 4 个线程池
        pool.execute(t1);   // 超过最大线程队伍队列 9>4+3 创建新的线程池 现在一共有 5 个线程池
        // 已经占满 到了新任务的拒绝时机了 会抛出异常
        pool.execute(t1);

    }
}
class myRunnable implements Runnable {
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName() + "  红红火火恍恍惚惚");
        try {
//            Thread.sleep(1000);
            Thread.sleep(Integer.MAX_VALUE);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }
}

Java 线程池的基本操作,Java,java,python,开发语言文章来源地址https://www.toymoban.com/news/detail-831155.html

package com.zhong.thread.threadpool;

import java.util.concurrent.*;

/**
 * @ClassName : ThreadPool
 * @Description : 线程池的基本操作
 * @Author : zhx
 * @Date: 2024-02-19 18:03
 */
public class ThreadPool {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        // 创建线程池对象
        ExecutorService pool = new ThreadPoolExecutor(3,
                5,
                8,
                TimeUnit.SECONDS,
                new ArrayBlockingQueue<>(4),
                Executors.defaultThreadFactory(),
                new ThreadPoolExecutor.AbortPolicy());

        Future<String> f1 = pool.submit(new myCallable(100));
        Future<String> f2 = pool.submit(new myCallable(200));
        Future<String> f3 = pool.submit(new myCallable(300));
        Future<String> f4 = pool.submit(new myCallable(400));
        Future<String> f5 = pool.submit(new myCallable(500));
        Future<String> f6 = pool.submit(new myCallable(600));
        System.out.println(f1.get());
        System.out.println(f2.get());
        System.out.println(f3.get());
        System.out.println(f4.get());
        System.out.println(f5.get());
        System.out.println(f6.get());

    }
}

/**
 * @ClassName : myCallable
 * @Description : 创建线程类方法三 实现 Callable 接口返回 1-n 的和
 * @Author : zhx
 * @Date: 2024-02-19 11:26
 */

class myCallable implements Callable<String> {
    private int n;

    public myCallable(int n) {
        this.n = n;
    }

    // 重写 call() 方法
    @Override
    public String call() throws Exception {
        int sum = 0;
        for (int i = 0; i <= n; i++) {
            sum += i;
        }
        return Thread.currentThread().getName() + "实现了求 1-" + n + " 的值是:" + (sum);
    }

}

到了这里,关于Java 线程池的基本操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java有关队列的基本操作

    队列是一种线性数据结构,队列中的元素只能先进先出; 队列的出口端叫做队头,入口端叫做队尾。 1.入队: 2.出队: 3.判断队满的情况: 点击查看代码

    2024年02月09日
    浏览(26)
  • Java 操作RestHighLevelClient基本使用

    在使用 RestHighLevelClient的过程中发现,它已经标记为过时了。 在 Elasticsearch7.15版本之后,Elasticsearch官方将它的高级客户端 RestHighLevelClient标记为弃用状态。 同时推出了全新的 Java API客户端 Elasticsearch Java API Client,该客户端也将在 Elasticsearch8.0及以后版本中成为官方推荐使用的

    2024年02月11日
    浏览(29)
  • ElasticSearch Java API 基本操作

    ElasticSearch Java API是ES官方在8.x版本推出的新java api,也可以适用于7.17.x版本的es。 本文主要参考了相关博文,自己手动编写了下相关操作代码,包括更新mappings等操作的java代码。 代码示例已上传github。 elasticsearch 版本: 7.17.9 ,修改 /elasticsearch-7.17.9/config/elasticsearch.yml ,新增

    2024年02月08日
    浏览(32)
  • Elasticsearch之java的基本操作一

    摘要   接触ElasticSearch已经有一段了。在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题。看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得都不是很全面。因此就有了写ElasticSearch开发教程的想法,将学习到的技术经验分享出来,

    2024年02月05日
    浏览(33)
  • 【Java】7 再识数组|数组的基本操作

    欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 目前,已开了以下专栏,欢迎关注与指导 1️⃣Java基础知识系统学习(持续更文中…) 2️⃣UML的应知应会(已更完) 3️⃣MySQL的应知应会(持续更文中…) 4️⃣算法与数据结构体系(持续更文中…

    2023年04月08日
    浏览(21)
  • 【Java】实现顺序表基本的操作(数据结构)

    在了解顺序表之前我们要先了解什么是线性表,线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列… 线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构

    2024年02月03日
    浏览(31)
  • 数据结构-树的遍历和基本操作(Java实现)

    二叉树的遍历分为以下三种:  前序遍历: 访问顺序为  根节点----左子树----右子树 中序遍历: 访问顺序为  左子树----根节点----右子树 后序遍历: 访问顺序为  左子树----右子树----根节点 接下来针对这3种遍历方式进行详细介绍: 上图前序遍历顺序为 1 2 3 4 5 6 上图中序遍历顺序

    2024年03月25日
    浏览(31)
  • Spark—通过Java、Scala API实现WordCount案例的基本操作

    实验原理 Spark的核心就是RDD,所有在RDD上的操作会被运行在Cluster上,Driver程序启动很多Workers,Workers在(分布式)文件系统中读取数据后转化为RDD(弹性分布式数据集),然后对RDD在内存中进行缓存和计算。 而RDD有两种类型的操作 ,分别是Action(返回values)和Transformations(

    2024年02月15日
    浏览(30)
  • 逸学Docker【java工程师基础】2.Docker镜像容器基本操作+安装MySQL镜像运行

    在这里我们的应用程序比如redis需要构建成镜像, 它作为一个Docker文件就可以进行 构建 ,构建完以后他是在 本地的 ,我们可以 推送 到镜像服务器,逆向可以 拉取 到上传的镜像,或者说我们可以保存为 压缩包 进行 相互传递 。 在本地的镜像可以传来传去,本身也可以查看

    2024年02月01日
    浏览(41)
  • ElasticSearch 中的中文分词器以及索引基本操作详解,Java高并发编程详解深入理解pdf

    PUT book/_settings { “number_of_replicas”: 2 } 修改成功后,如下: 更新分片数也是一样。 2.3 修改索引的读写权限 索引创建成功后,可以向索引中写入文档: PUT book/_doc/1 { “title”:“三国演义” } 写入成功后,可以在 head 插件中查看: 默认情况下,索引是具备读写权限的,当然这

    2024年04月09日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包