<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Java虛擬機時是運行所有Java程序的抽象計算機,允許應用并發的運行多個線程。在Java語言中,多線程的實現,一般有以下3中方法:

      1.實現Runnable接口,并實現該接口的run()方法;
      主要步驟:
      1.自定義類并實現Runnable接口,實現run()方法;
      2.創建Thread類,用實現Runnable接口的對象作為參數實例化該Thread對象;
      3.調用Thread類的start()方法;

      class MyThread implements Runnable{
      //創建線程
      public void run(){
      System.out.println("Thread body");
      }
      }

      public class Test{
      public static void main(String[]args){
      MyThread thread=new MyThread();
      Thread t=new Thread(thread);
      t.start;//開啟線程
      }
      }

      2.繼承Thread類,重寫run方法
      Thread類本質上也是實現了Runnable接口的一個實例,它代表一個線程的實例,并且,啟動線程的唯一方法就是通過Thread類的start()方法。start()方法是一個native(本地)方法,它將啟動一個新線程,并執行run()方法。這種方式通過自定義類直接extends Thread,并重寫run()方法,就可以啟動新線程并執行自己定義的run()方法。需要注意的是,當star()方法調用后并不是立即執行多線程代碼,而是使得該線程變為可運行態(Runnable),什么時候運行多線程代碼是由操作系統決定的。

      class MyThread extends Thread{
      //創建線程類
      public void run(){
      System.out.println("Thread body");
      }
      }

      public class Test{
      public static void main(String[]args){
      MyThread thread=new MyThread();
      thread.start();//開啟線程
      }
      }

      3.實現Callable接口,重寫call()方法;
      Callable對象實際上是屬于Excutor框架中的功能類,Callable接口與Runnable接口類似,但是提供了比Runnable接口更強大的功能,主要表現為以下三點:

      1.Callable可以在任務結束后提供一個返回值,Runnable無法提供這個功能;
      2.Callable中的call()方法可以拋出異常,而Runnable的run方法不能拋出異常;
      3.運行Callable可以拿到一個Future對象,Future對象表示異步計算的結果。它提供了檢查計算是否完成的方法。由于線程屬于異步計算模型,所以無法從其他線程中得到方法的返回值,在這種情況下,就可以使用Future來監視目標線程調用call()方法的情況,當調用Future的get()方法以獲取結果時,當前線程就會阻塞,直到call()方法結束返回結果。

      import java.util.concurrent.*
      public class CallableAndFuture{
      public static class CallableTest implements Callable{
      public String call()throws Exception{
      return "Hello World!"
      }
      }

      public static void main(String []args){
      ExcutorService threadPool=Executor.newSingleThreadExecutor();

      Future<String>future=threadPool.submit(new CallableTest());
      
      try{
        System.out.println("waiting thread to finish");
        System.out.println(future.get());
      }
      catch(Exception e){
        e.printStackTrace();
      }
      

      }
      }

      posted on 2024-01-27 15:18  不二一哥  閱讀(25)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产亚洲AV电影院之毛片| 无码内射中文字幕岛国片| 国产高清在线男人的天堂| 亚洲精品日本一区二区| 亚洲精品熟女一区二区| 在线中文一区字幕对白| 欧美高清freexxxx性| 精品一区精品二区制服| 大陆一级毛片免费播放| 久久婷婷成人综合色| 人妻av无码系列一区二区三区| 亚洲夂夂婷婷色拍ww47| 国产精品小粉嫩在线观看| 国产成人亚洲精品狼色在线| 人妻少妇精品视频无码综合| 好姑娘6电影在线观看| аⅴ天堂中文在线网| 重口SM一区二区三区视频| 日本一区二区三区免费播放视频站| 无码人妻斩一区二区三区| 宁海县| 九九久久自然熟的香蕉图片| 久久香蕉国产线看观看猫咪av| 少妇熟女视频一区二区三区| 九九九精品成人免费视频小说| 国产成人高清亚洲综合| 久热这里只有精品蜜臀av| 久久精品国产99久久久古代 | 国产中文字幕精品喷潮| 桃花岛亚洲成在人线AV| 欧洲亚洲成av人片天堂网| 国产亚洲精品第一综合麻豆| 国产精品视频白浆免费视频| 国产精品毛片久久久久久久| 极品人妻少妇一区二区三区| 久久精品蜜芽亚洲国产AV| 留坝县| 精品国产片一区二区三区| 中文字幕不卡在线播放| 国产精品一区二区三区黄| 亚洲国产一区二区在线|