1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      java中有哪些實(shí)現(xiàn)多線程的方法

      這篇文章將為大家詳細(xì)講解有關(guān)java中有哪些實(shí)現(xiàn)多線程的方法,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

      特克斯ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

      常用的java框架有哪些

      1.SpringMVC,Spring Web MVC是一種基于Java的實(shí)現(xiàn)了Web MVC設(shè)計(jì)模式的請(qǐng)求驅(qū)動(dòng)類型的輕量級(jí)Web框架。2.Shiro,Apache Shiro是Java的一個(gè)安全框架。3.Mybatis,MyBatis 是支持普通 SQL查詢,存儲(chǔ)過程和高級(jí)映射的優(yōu)秀持久層框架。4.Dubbo,Dubbo是一個(gè)分布式服務(wù)框架。5.Maven,Maven是個(gè)項(xiàng)目管理和構(gòu)建自動(dòng)化工具。6.RabbitMQ,RabbitMQ是用Erlang實(shí)現(xiàn)的一個(gè)高并發(fā)高可靠AMQP消息隊(duì)列服務(wù)器。7.Ehcache,EhCache 是一個(gè)純Java的進(jìn)程內(nèi)緩存框架。

      1、lambda表達(dá)式創(chuàng)建線程

      使用lambda的形式實(shí)例化線程任務(wù)類,創(chuàng)建線程對(duì)象,并將線程任務(wù)類作為構(gòu)造方法參數(shù)傳入。

      package com.kingh.thread.create;
      
      public class CreateThreadDemo5_Lambda {
       
          public static void main(String[] args) throws Exception {
              // 使用lambda的形式實(shí)例化線程任務(wù)類
              Runnable task = () -> {
                  while (true) {
                      // 輸出線程的名字
                      printThreadInfo();
                  }
              };
       
              // 創(chuàng)建線程對(duì)象,并將線程任務(wù)類作為構(gòu)造方法參數(shù)傳入
              new Thread(task).start();
       
              // 主線程的任務(wù),為了演示多個(gè)線程一起執(zhí)行
              while (true) {
                  printThreadInfo();
                  Thread.sleep(1000);
              }
          }
       
          /**
           * 輸出當(dāng)前線程的信息
           */
          private static void printThreadInfo() {
              System.out.println("當(dāng)前運(yùn)行的線程名為: " + Thread.currentThread().getName());
              try {
                  Thread.sleep(1000);
              } catch (Exception e) {
                  throw new RuntimeException(e);
              }
          }
      }

      2、使用ExecutorService、Callable、Future實(shí)現(xiàn)有返回結(jié)果的多線程

      可以返回值的任務(wù)必須是Callable接口,類似的,沒有返回值的任務(wù)必須是Runnable接口。執(zhí)行Callable任務(wù)后,可以獲得一個(gè)Future對(duì)象,通過調(diào)用get可以獲得Callable任務(wù)返回的Object,然后結(jié)合線程池接口ExecutorService可以實(shí)現(xiàn)傳說中有返回結(jié)果的多線程。

      import java.util.concurrent.*;
      import java.util.Date;
      import java.util.List;
      import java.util.ArrayList;
       
      /**
      * 有返回值的線程
      */
      @SuppressWarnings("unchecked")
      public class Test {
      public static void main(String[] args) throws ExecutionException,
          InterruptedException {
         System.out.println("----程序開始運(yùn)行----");
         Date date1 = new Date();
       
         int taskSize = 5;
         // 創(chuàng)建一個(gè)線程池
         ExecutorService pool = Executors.newFixedThreadPool(taskSize);
         // 創(chuàng)建多個(gè)有返回值的任務(wù)
         List list = new ArrayList();
         for (int i = 0; i < taskSize; i++) {
          Callable c = new MyCallable(i + " ");
          // 執(zhí)行任務(wù)并獲取Future對(duì)象
          Future f = pool.submit(c);
          // System.out.println(">>>" + f.get().toString());
          list.add(f);
         }
         // 關(guān)閉線程池
         pool.shutdown();
       
         // 獲取所有并發(fā)任務(wù)的運(yùn)行結(jié)果
         for (Future f : list) {
          // 從Future對(duì)象上獲取任務(wù)的返回值,并輸出到控制臺(tái)
          System.out.println(">>>" + f.get().toString());
         }
       
         Date date2 = new Date();
         System.out.println("----程序結(jié)束運(yùn)行----,程序運(yùn)行時(shí)間【"
           + (date2.getTime() - date1.getTime()) + "毫秒】");
      }
      }
       
      class MyCallable implements Callable {
      private String taskNum;
       
      MyCallable(String taskNum) {
         this.taskNum = taskNum;
      }
       
      public Object call() throws Exception {
         System.out.println(">>>" + taskNum + "任務(wù)啟動(dòng)");
         Date dateTmp1 = new Date();
         Thread.sleep(1000);
         Date dateTmp2 = new Date();
         long time = dateTmp2.getTime() - dateTmp1.getTime();
         System.out.println(">>>" + taskNum + "任務(wù)終止");
         return taskNum + "任務(wù)返回運(yùn)行結(jié)果,當(dāng)前任務(wù)時(shí)間【" + time + "毫秒】";
      }
      }

      關(guān)于java中有哪些實(shí)現(xiàn)多線程的方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。


      名稱欄目:java中有哪些實(shí)現(xiàn)多線程的方法
      標(biāo)題URL:http://ef60e0e.cn/article/ihshdj.html 99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
          1. <ul id="0c1fb"></ul>

            <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
            <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

            吉林市| 双桥区| 塔河县| 西贡区| 海伦市| 新泰市| 尉犁县| 五莲县| 衡东县| 万年县| 老河口市| 贵港市| 光泽县| 西峡县| 江油市| 辽阳市| 伊春市| 东平县| 宝清县| 全州县| 阳谷县| 饶阳县| 沙河市| 惠州市| 镇巴县| 融水| 壤塘县| 大竹县| 云安县| 丰原市| 辉县市| 曲阳县| 宝鸡市| 海城市| 华宁县| 吉安市| 赫章县| 安仁县| 塘沽区| 白朗县| 大连市|