加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Java线程池实现道理与技能,看这一篇就够了

发布时间:2019-04-01 20:07:41 所属栏目:建站 来源:程序员柯南
导读:01.无穷制线程的弱点 多线程的软件计划要领确实可以最大限度地施展多核处理赏罚器的计较手段,提跨越产体系的吞吐量和机能。可是,若不加节制和打点的随意行使线程,对体系的机能反而会发生倒霉的影响。 一种最为简朴的线程建设和接纳的要领相同如下: newThre

2.要实现上面的线程池,就必要一个永不退出的线程与之共同。PThread就是一个这样的线程。它的主体部门是一个无穷轮回,该线程在手动封锁前永不竣事,并一向守候新的使命达到。

  1. public class PThread extends Thread { 
  2.     //线程池 
  3.     private ThreadPool pool; 
  4.     //使命 
  5.     private Runnable target; 
  6.     private boolean isShutDown = false; 
  7.     private boolean isIdle = false; //是否闲置 
  8.     //结构函数 
  9.     public PThread(Runnable target,String name, ThreadPool pool){ 
  10.         super(name); 
  11.         this.pool = pool; 
  12.         this.target = target; 
  13.     } 
  14.  
  15.     public Runnable getTarget(){ 
  16.         return target; 
  17.     } 
  18.  
  19.     public boolean isIdle() { 
  20.         return isIdle; 
  21.     } 
  22.  
  23.     @Override 
  24.     public void run() { 
  25.         //只要没有封锁,则一向不竣事该线程 
  26.         while (!isShutDown){ 
  27.             isIdle =  false; 
  28.             if (target != null){ 
  29.                 //运利用命 
  30.                 target.run(); 
  31.             } 
  32.             try { 
  33.                 //使命竣事了,到闲置状态 
  34.                 isIdle = true; 
  35.                 pool.repool(this); 
  36.                 synchronized (this){ 
  37.                     //线程空闲,守候新的使命到来 
  38.                     wait(); 
  39.                 } 
  40.             } catch (InterruptedException e) { 
  41.                 e.printStackTrace(); 
  42.             } 
  43.             isIdle = false; 
  44.         } 
  45.     } 
  46.  
  47.     public synchronized void setTarget(Runnable newTarget){ 
  48.         target = newTarget; 
  49.         //配置了使命之后,关照run要领,开始执行这个使命 
  50.         notifyAll(); 
  51.     } 
  52.  
  53.     //封锁线程 
  54.     public synchronized void shutDown(){ 
  55.         isShutDown = true; 
  56.         notifyAll(); 
  57.     } 
  58.  

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读