首页 switch游戏正文

海山任务线 :中软国际分享---最精简的java 线程池与任务队列

nsgame switch游戏 2021-05-07 16:59:10 28 0

  1 import java.util.*;

  2 public class WorkQueue

  3 {

  4 private final int nThreads;//线程池的巨细

  5 private final PoolWorker[] threads;//用数组实行线程池

  6 private final LinkedList queue;//工作部队

  7

  8 public WorkQueue(int nThreads){

  9 this.nThreads = nThreads;

  10 queue = new LinkedList();

  11 threads = new PoolWorker[nThreads];

  12

  13 for (int i=0; i

  14 threads[i] = new PoolWorker();

  15 threads[i].start();//启用一切处事线程

  16 }

  17 }

  18

  19 public void execute(Runnable r) {//实行工作

  20 synchronized(queue) {

  21 queue.addLast(r);

  22 queue.notify();

  23 }

  24 }

  25

  26 private class PoolWorker extends Thread {//处事线程类

  27 public void run() {

  28 Runnable r;

  29 while (true) {

  30 synchronized(queue) {

  31 while (queue.isEmpty()) {//即使工作部队中没有工作,等候

  32 try{

  33 queue.wait();

  34 }catch (InterruptedException ignored){}

  35 }

  36 r = (Runnable) queue.removeFirst();//有工作时,掏出工作

  37 }

  38 try {

  39 r.run();//实行工作

  40 }catch (RuntimeException e) {

  41 // You might want to log something here

  42 }

  43 }

  44 }

  45 }

  46

  47

  48 public static void main(String args[]){

  49 WorkQueue wq=new WorkQueue(10);//10个处事线程

  50 Mytask r[]=new Mytask[20];//20个工作

  51

  52 for(int i=0;i<20;i++){

  53 r[i]=new Mytask();

  54 wq.execute(r[i]);

  55 }

  56 }

  57 }

  58 class Mytask implements Runnable{//工作接口

  59 public void run(){

  60 String name=Thread.currentThread()。getName();

  61 try{

  62 Thread.sleep(100);//模仿工作实行的功夫

  63 }catch(InterruptedException e){}

  64 System.out.println(name+" executed OK");

  65 }

  66 }

  公司网址:

海山任务线
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

发表评论

评论列表(0人评论 , 28人围观)
☹还没有评论,来说两句吧...