123123123线程池

线程池简易
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.atomic.AtomicBoolean;

/**

  • 简单线程池实现
    */
    public class SimpleThreadPool {
    // 任务队列
    private final BlockingQueue taskQueue;
    // 线程池的工作线程数组
    private final WorkerThread[] threads;
    // 线程池是否停止的标志
    private final AtomicBoolean isStopped = new AtomicBoolean(false);

    /**

    • 构造函数

    • @param numberOfThreads 线程池中线程的数量

    • @param maxNumberOfTasks 队列最大任务数量
      */
      public SimpleThreadPool(int numberOfThreads, int maxNumberOfTasks) {
      taskQueue = new LinkedBlockingQueue<>(maxNumberOfTasks);
      threads = new WorkerThread[numberOfThreads];

      // 初始化并启动所有工作线程
      for (int i = 0; i < numberOfThreads; i++) {
      threads[i] = new WorkerThread();
      threads[i].start();
      }
      }

    /**

    • 提交任务到线程池

    • @param task 需要执行的任务

    • @throws Exception 如果线程池已停止,抛出异常
      */
      public void execute(Runnable task) throws Exception {
      if (this.isStopped.get()) {
      throw new IllegalStateException(“ThreadPool is stopped”);
      }

      this.taskQueue.offer(task);
      }

    /**

    • 停止线程池
    • @throws Exception
      */
      public void stop() throws Exception {
      this.isStopped.set(true);
      for (WorkerThread thread : threads) {
      thread.doStop();
      }
      }

    /**

    • 工作线程类
      */
      private class WorkerThread extends Thread {
      // 线程停止标志
      private AtomicBoolean isStopped = new AtomicBoolean(false);

      @Override
      public void run() {
      // 当线程未被停止时循环执行
      while (!isStopped.get()) {
      try {
      // 从任务队列中取出并执行任务
      Runnable runnable = taskQueue.take();
      runnable.run();
      } catch (Exception e) {
      // 异常处理逻辑(简化处理)
      System.out.println(“Thread interrupted” + e.getMessage());
      }
      }
      }

      /**

      • 停止当前工作线程
        */
        public void doStop() {
        isStopped.set(true);
        // 中断线程
        this.interrupt();
        }
        }
        }
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值