欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
JDK1.5新特性——java.util.concurrent 線(xiàn)程池(1)

JDK5中的一個(gè)亮點(diǎn)就是將Doug Lea并發(fā)庫引入到Java標準庫中。Doug Lea確實(shí)是一個(gè)牛人,能教書(shū),能出書(shū),能編碼,不過(guò)這在國外還是比較普遍的,而國內的教授們就相差太遠了。

一般的服務(wù)器都需要線(xiàn)程池,比如Web、FTP等服務(wù)器,不過(guò)它們一般都自己實(shí)現了線(xiàn)程池,比如以前介紹過(guò)的Tomcat、Resin和Jetty等,現在有了JDK5,我們就沒(méi)有必要重復造車(chē)輪了,直接使用就可以,何況使用也很方便,性能也非常高。

package concurrent;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class TestThreadPool {
  public static void main(String args[]) throws InterruptedException {
    // only two threads
    ExecutorService exec = Executors.newFixedThreadPool(2);
    for(int index = 0; index < 100; index++) {
      Runnable run = new Runnable() {
        public void run() {
          long time = (long) (Math.random() 1000);
          System.out.println("Sleeping " + time + "ms");
            try {
              Thread.sleep(time);
            catch (InterruptedException e) {
            }
        }
      };
      exec.execute(run);
    }
    // must shutdown
    exec.shutdown();
  }
}

上面是一個(gè)簡(jiǎn)單的例子,使用了2個(gè)大小的線(xiàn)程池來(lái)處理100個(gè)線(xiàn)程。但有一個(gè)問(wèn)題:在for循環(huán)的過(guò)程中,會(huì )等待線(xiàn)程池有空閑的線(xiàn)程,所以主線(xiàn)程會(huì )阻塞的。為了解決這個(gè)問(wèn)題,一般啟動(dòng)一個(gè)線(xiàn)程來(lái)做for循環(huán),就是為了避免由于線(xiàn)程池滿(mǎn)了造成主線(xiàn)程阻塞。不過(guò)在這里我沒(méi)有這樣處理。[重要修正:經(jīng)過(guò)測試,即使線(xiàn)程池大小小于實(shí)際線(xiàn)程數大小,線(xiàn)程池也不會(huì )阻塞的,這與Tomcat的線(xiàn)程池不同,它將Runnable實(shí)例放到一個(gè)“無(wú)限”的BlockingQueue中,所以就不用一個(gè)線(xiàn)程啟動(dòng)for循環(huán),Doug Lea果然厲害]

另外它使用了Executors的靜態(tài)函數生成一個(gè)固定的線(xiàn)程池,顧名思義,線(xiàn)程池的線(xiàn)程是不會(huì )釋放的,即使它是Idle。這就會(huì )產(chǎn)生性能問(wèn)題,比如如果線(xiàn)程池的大小為200,當全部使用完畢后,所有的線(xiàn)程會(huì )繼續留在池中,相應的內存和線(xiàn)程切換(while(true)+sleep循環(huán))都會(huì )增加。如果要避免這個(gè)問(wèn)題,就必須直接使用ThreadPoolExecutor()來(lái)構造??梢韵馮omcat的線(xiàn)程池一樣設置“最大線(xiàn)程數”、“最小線(xiàn)程數”和“空閑線(xiàn)程keepAlive的時(shí)間”。通過(guò)這些可以基本上替換Tomcat的線(xiàn)程池實(shí)現方案。

需要注意的是線(xiàn)程池必須使用shutdown來(lái)顯式關(guān)閉,否則主線(xiàn)程就無(wú)法退出。shutdown也不會(huì )阻塞主線(xiàn)程。

 

多長(cháng)時(shí)間運行的應用有時(shí)候需要定時(shí)運行任務(wù)完成一些諸如統計、優(yōu)化等工作,比如在電信行業(yè)中處理用戶(hù)話(huà)單時(shí),需要每隔1分鐘處理話(huà)單;網(wǎng)站每天凌晨統計用戶(hù)訪(fǎng)問(wèn)量、用戶(hù)數;大型超時(shí)凌晨3點(diǎn)統計當天銷(xiāo)售額、以及最熱賣(mài)的商品;每周日進(jìn)行數據庫備份;公司每個(gè)月的10號計算工資并進(jìn)行轉帳等,這些都是定時(shí)任務(wù)。通過(guò) java的并發(fā)庫concurrent可以輕松的完成這些任務(wù),而且非常的簡(jiǎn)單。

package concurrent;
import static java.util.concurrent.TimeUnit.SECONDS;
import java.util.Date;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
public class TestScheduledThread {
  public static void main(String[] args) {
    final ScheduledExecutorService scheduler = Executors
        .newScheduledThreadPool(2);
    final Runnable beeper = new Runnable() {
      int count = 0;
      public void run() {
        System.out.println(new Date() " beep " (++count));
      }
    };
    // 1秒鐘后運行,并每隔2秒運行一次
    final ScheduledFuture<?> beeperHandle = scheduler.scheduleAtFixedRate(
        beeper, 12, SECONDS);
    // 2秒鐘后運行,并每次在上次任務(wù)運行完后等待5秒后重新運行
    final ScheduledFuture<?> beeperHandle2 = scheduler
        .scheduleWithFixedDelay(beeper, 25, SECONDS);
    // 30秒后結束關(guān)閉任務(wù),并且關(guān)閉Scheduler
    scheduler.schedule(new Runnable() {
      public void run() {
        beeperHandle.cancel(true);
        beeperHandle2.cancel(true);
        scheduler.shutdown();
      }
    }30, SECONDS);
  }
}

為了退出進(jìn)程,上面的代碼中加入了關(guān)閉Scheduler的操作。而對于24小時(shí)運行的應用而言,是沒(méi)有必要關(guān)閉Scheduler的。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Java實(shí)現定時(shí)任務(wù)的三種方法
Java多線(xiàn)程(1):3種常用的實(shí)現多線(xiàn)程類(lèi)的方法
Java 并行框架總結(Concurrent)
java的concurrent用法詳解
Java:Java程序猿必會(huì )的四種線(xiàn)程池
多線(xiàn)程+阻塞隊列實(shí)現生產(chǎn)者和消費者
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久