Java基礎之線程——使用Runnable接口(JumbleNames)

控制臺程序。

除了定義Thread新的子類外,還可以在類中實現Runnable接口。您會發現這比從Thread類派生子類更方便,因為在實現Runnable接口時可以從不是Thread的類派生子類,并且仍然表示線程。Java只允許有單個基類,如果類派生于Thread,就不能再繼承其他類中的功能。Runnabel接口只定義了方法run(),這個方法在啟動線程時執行。

 1 import java.io.IOException;
 2 
 3 public class JumbleNames implements Runnable {
 4   // Constructor
 5   public JumbleNames(String firstName, String secondName, long delay) {
 6     this.firstName = firstName;                                        // Store the first name
 7     this.secondName = secondName;                                      // Store the second name
 8     aWhile = delay;                                                    // Store the delay
 9   }
10 
11   // Method where thread execution will start
12   public void run() {
13     try {
14       while(true) {                                                    // Loop indefinitely...
15         System.out.print(firstName);                                   // Output first name
16         Thread.sleep(aWhile);                                          // Wait aWhile msec.
17         System.out.print(secondName+"\n");                             // Output second name
18       }
19     } catch(InterruptedException e) {                                  // Handle thread interruption
20       System.out.println(firstName + secondName + e);                  // Output the exception
21     }
22   }
23 
24   public static void main(String[] args) {
25     // Create three threads
26     Thread first = new Thread(new JumbleNames("Hopalong ", "Cassidy ", 200L));
27     Thread second = new Thread(new JumbleNames("Marilyn ", "Monroe ", 300L));
28     Thread third = new Thread(new JumbleNames("Slim ", "Pickens ", 500L));
29 
30     // Set threads as daemon
31     first.setDaemon(true);
32     second.setDaemon(true);
33     third.setDaemon(true);
34     System.out.println("Press Enter when you have had enough...\n");
35     first.start();                                                     // Start the first thread
36     second.start();                                                    // Start the second thread
37     third.start();                                                     // Start the third thread
38     try {
39       System.in.read();                                                // Wait until Enter key pressed
40       System.out.println("Enter pressed...\n");
41 
42     } catch (IOException e) {                                          // Handle IO exception
43       System.err.println(e);                                           // Output the exception
44     }
45     System.out.println("Ending main()");
46     return;
47   }
48 
49   private String firstName;                                            // Store for first name
50   private String secondName;                                           // Store for second name
51   private long aWhile;                                                 // Delay in milliseconds
52 }

不能在這個構造函數中調用setDaemon()方法,因為這個類并非派生于Thread類。
在創建表示線程的對象之后并且在調用run()方法之前,需要調用setDaemon()方法。

在main()方法中,仍然為每個執行線程創建了Thread對象,但這次使用的構造函數把Runnable類型的對象作為參數。

?

轉載于:https://www.cnblogs.com/mannixiang/p/3444582.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/376264.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/376264.shtml
英文地址,請注明出處:http://en.pswp.cn/news/376264.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

cpri帶寬不足的解決方法_白皮書:FPGA賦能下一代通信和網絡解決方案(第四部分)...

對PCIe Gen 5的支持除了以太網和存儲控制器,Speedster7t FPGA上提供的對PCIe Gen 5的支持還能夠與主機處理器緊密集成,以支持諸如sidecar智能網卡(SmartNIC)設計等高性能加速器應用。PCI Gen 5控制器使其能夠讀取和寫入存儲在FPGA內存層級結構中的數據&a…

laravel里面使用event

模式:大概是通過一個自定義的event,一個handler,還有一個binder,然后用來簡化通知模型 生成自定義的event ./artisan make:event MyEvent 生成自定義的handler ./artisan handler:event MyEventHandler --eventMyEvent 然后在Even…

C語言的條件編譯#if, #elif, #else, #endif、#ifdef, #ifndef

有些程序在調試、兼容性、平臺移植等情況下可能想要通過簡單地設置一些參數就生成一個不同的軟件,這當然可以通過變量設置,把所有可能用到的代碼都寫進去,在初始化時配置,但在不同的情況下可能只用到一部分代碼,就沒必…

山體等高線怎么看_每日一題 | 此處向斜山,你看出來了嗎?

每日一題 | 此處向斜山,你看出來了嗎?(2018江蘇高考)如圖為某區域地質簡圖。該區沉積地層有Q、P、C、D、S2、S1,其年代依次變老。讀圖回答1~2題。1.從甲地到乙地的地形地質剖面示意圖是(  )2.為揭示深部地…

cmake The source directory xxxx does not appear to contain CMakeLists.txt

執行 cmake . 的時候報錯: The source directory “xxxx” does not appear to contain CMakeLists.txt 簡單來說就是當前文件夾里面沒有 CMakeLists.txt

SSH出錯--hibernate--org.hibernate.hql.ast.QuerySyntaxException: User is not mapped [from User]

String queryString "from user where u.userName ? and u.userPassword ?"; ----------------------------------------------------------- 改為: String queryString "from User where u.userName ? and u.userPassword ?"; 我估…

Linux下的tar壓縮解壓縮命令詳解

tar -c: 建立壓縮檔案-x:解壓-t:查看內容-r:向壓縮歸檔文件末尾追加文件-u:更新原壓縮包中的文件 這五個是獨立的命令,壓縮解壓都要用到其中一個,可以和別的命令連用但只能用其中一個。下面的參數是根據需要…

java和c++的區別大嗎_大空間消防水炮ZDMS0.8/30S坐裝和吊裝有區別嗎?

大空間消防水炮現在是高大建筑的消防必備的設備之一,其型號按照流量可分為4種,ZDMS0.6/5S,ZDMS0.6/10S,SZDMS0.8/20S,ZDMS0.8/30S。在這中間使用較多的是5L和30L的,5L的消防水炮都是吊裝,但是30…

Windows Hook(1)加載DLL

DLL代碼 #include <Windows.h> BOOL APIENTRY DllMain( HMODULE hModule,DWORD ul_reason_for_call,LPVOID lpReserved) {switch (ul_reason_for_call){case DLL_PROCESS_ATTACH:MessageBox(NULL, L"dllHook", L"Hook", MB_OK);break;case DLL_THR…

WPF Delegate委托整理

那啥&#xff0c;是從這里整理出來的&#xff0c;感謝Rising_Sun&#xff0c;整理的過于簡單&#xff0c;看不明白的戳這里 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; us…

silverligh的數據訪問

對于在Silverlight中訪問數據&#xff0c;初學者的誤解之一就是他們在Silverlight中尋找ADO.NET類庫。別找了&#xff0c;找不到的。記住&#xff0c;Silverlight是部署在互聯網上的客端技術&#xff0c;你不能要求一個瀏覽器插件去直接訪問你的數據庫……除非你想把數據庫直接…

cacheinterceptor第二次訪問沒被調用_訪問者設計模式在OSG中的應用

為什么要談談訪問者設計模式呢&#xff1f;因為OSG整個引擎就是用訪問者設計模式建立起來的&#xff0c;不論是遍歷節點圖&#xff0c;還是做各種實用的功能&#xff0c;都需要大量的用到訪問者設計模式。先談談訪問者設計模式的定義。1&#xff1a;什么是訪問者模式訪問者模式…

Windows Hook(2)調用DLL函數

DLL代碼 #include <Windows.h>BOOL APIENTRY DllMain( HMODULE hModule,DWORD ul_reason_for_call,LPVOID lpReserved) {switch (ul_reason_for_call){case DLL_PROCESS_ATTACH:MessageBox(NULL, L"dllHook", L"Hook", MB_OK);break;case DLL_THRE…

HDU4678_Mine

很有意思&#xff0c;很好的題目。 這樣的&#xff0c;一個n*m的掃雷地圖&#xff0c;告訴你哪些地方是有雷的。一個人如果點在了空白處&#xff0c;那么與其相鄰的&#xff08;八個方向&#xff09;的數字以及空白都會遞歸地顯示出來&#xff0c;如果點在數字上面&#xff0c;…

pygame只能編寫游戲_游戲框架搭建

游戲框架搭建目標 —— 使用 面相對象 設計 飛機大戰游戲類目標明確主程序職責實現主程序類準備游戲精靈組01. 明確主程序職責回顧 快速入門案例&#xff0c;一個游戲主程序的 職責 可以分為兩個部分&#xff1a;游戲初始化游戲循環根據明確的職責&#xff0c;設計 PlaneGame 類…

周末閱讀:本周熱門文章排行榜

那道不清說不盡的故事 iPhone 的創意并非來自喬布斯一人&#xff0c;其起源可以追溯到 Jony 的設計團隊對多點觸控屏幕的思考和探索&#xff0c;也正是因為對這個技術的看好&#xff0c;在對其在手機上的可行新的不斷測試后&#xff0c;蘋果最后下定決心進軍手機領域。這篇文章…

python3 hash算法使用

python3下的pycryptodome庫 from Crypto.cipher import * if __name__ __main__:message 123#MD5和SHA的用法差不多print("SHA3_512: " SHA3_512.new(message.encode(utf-8)).digest().hex())print("SHA512: " SHA512.new(message.encode(utf-8)).dig…

poj3335 半平面交

題意&#xff1a;給出一多邊形。判斷多邊形是否存在一點&#xff0c;使得多邊形邊界上的所有點都能看見該點。 sol&#xff1a;在紙上隨手畫畫就可以找出規律&#xff1a;按逆時針順序連接所有點。然后找出這些line的半平面交。 題中給出的點已經按順時針排好序了&#xff0c;所…

php進程間通信 yoc_續上篇Swoole多進程數據共享的問題

原因進程作為程序執行過程中資源分配的基本單位&#xff0c;擁有獨立的地址空間,同一進程的線程可以共享本進程的全局變量&#xff0c;靜態變量等數據和地址空間&#xff0c;但進程之間資源相互獨立。由于PHP語言不支持多線程&#xff0c;因此Swoole使用多進程模式&#xff0c;…

JavaBean的規范

&#xff08;1&#xff09;JavaBean 類必須是一個公共類&#xff0c;并將其訪問屬性設置為 public &#xff08;2&#xff09;JavaBean 類必須有一個空的構造函數&#xff1a;類中必須有一個不帶參數的公用構造器&#xff0c;此構造器也應該通過調用各個特性的設置方法來設置特…