java開啟新線程的三種方法

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

方式1:繼承Thread類

步驟:

1):定義一個類A繼承于Java.lang.Thread類.

2):在A類中覆蓋Thread類中的run方法.

3):我們在run方法中編寫需要執行的操作:run方法里的代碼,線程執行體.

4):在main方法(線程)中,創建線程對象,并啟動線程.

(1)創建線程類對象: ???????????????

A類 ??a ?= ?new ??A類();

(2)調用線程對象的start方法: ???

a.start();//啟動一個線程

?

注意:千萬不要調用run方法,如果調用run方法好比是對象調用方法,依然還是只有一個線程,并沒有開啟新的線程.

線程只能啟動一次!

創建啟動線程實例:

?

[java]?view plain?copy
  1. //1):定義一個類A繼承于java.lang.Thread類.??
  2. class?MusicThread?extends?Thread{??
  3. ????//2):在A類中覆蓋Thread類中的run方法.??
  4. ????public?void?run()?{??
  5. ????????//3):在run方法中編寫需要執行的操作??
  6. ????????for(int?i?=?0;?i?<?50;?i?++){??
  7. ????????????System.out.println("播放音樂"+i);??
  8. ????????}??
  9. ????}??
  10. }??
  11. ??
  12. public?class?ExtendsThreadDemo?{??
  13. ????public?static?void?main(String[]?args)?{??
  14. ??????????
  15. ????????for(int?j?=?0;?j?<?50;?j?++){??
  16. ????????????System.out.println("運行游戲"+j);??
  17. ????????????if(j?==?10){??
  18. ????????????????//4):在main方法(線程)中,創建線程對象,并啟動線程.??
  19. ????????????????MusicThread?music?=?new?MusicThread();??
  20. ????????????????music.start();??
  21. ????????????}??
  22. ????????}??
  23. ????}??
  24. ??
  25. }??

?

?

方式2:實現Runnable接口

步驟:

1):定義一個類A實現于java.lang.Runnable接口,注意A類不是線程類.

2):在A類中覆蓋Runnable接口中的run方法.

3):我們在run方法中編寫需要執行的操作:run方法里的,線程執行體.

4):在main方法(線程)中,創建線程對象,并啟動線程.

?????(1)創建線程類對象:

?????Thread ?t = new Thread(new ?A()); ???

?????(2)調用線程對象的start方法:

? ? ?t.start();

?

[java]?view plain?copy
  1. //1):定義一個類A實現于java.lang.Runnable接口,注意A類不是線程類.??
  2. class?MusicImplements?implements?Runnable{??
  3. ????//2):在A類中覆蓋Runnable接口中的run方法.??
  4. ????public?void?run()?{??
  5. ????????//3):在run方法中編寫需要執行的操作??
  6. ????????for(int?i?=?0;?i?<?50;?i?++){??
  7. ????????????System.out.println("播放音樂"+i);??
  8. ????????}??
  9. ??????????
  10. ????}??
  11. }??
  12. ??
  13. public?class?ImplementsRunnableDemo?{??
  14. ????public?static?void?main(String[]?args)?{??
  15. ????????for(int?j?=?0;?j?<?50;?j?++){??
  16. ????????????System.out.println("運行游戲"+j);??
  17. ????????????if(j?==?10){??
  18. ????????????????//4):在main方法(線程)中,創建線程對象,并啟動線程??
  19. ????????????????MusicImplements?mi?=?new?MusicImplements();??
  20. ????????????????Thread?t?=?new?Thread(mi);??
  21. ????????????????t.start();??
  22. ????????????}??
  23. ????????}??
  24. ????}??
  25. ??
  26. }??

?

分析繼承方式和實現方式的區別:

?

繼承方式:
? ? ? ? ? ? ? ? 1):從設計上分析,Java中類是單繼承的,如果繼承了Thread了,該類就不能再有其他的直接父類了.
? ? ? ? ? ? ? ? 2):從操作上分析,繼承方式更簡單,獲取線程名字也簡單.(操作上,更簡單)
? ? ? ? ? ? ? ? 3):從多線程共享同一個資源上分析,繼承方式不能做到.
實現方式:
? ? ? ? ? ? ? ? 1):從設計上分析,Java中類可以多實現接口,此時該類還可以繼承其他類,并且還可以實現其他接口,設計更為合理.
? ? ? ? ? ? ? ? 2):從操作上分析,實現方式稍微復雜點,獲取線程名字也比較復雜,得使用Thread.currentThread()來獲取當前線程的引用.

?? ? ? ? ? ? ? 3):從多線程共享同一個資源上分析,實現方式可以做到(是否共享同一個資源).

?

補充:實現方式獲取線程名字:

String name = Thread.currentThread().getName();

?

?

?

?

方式3:直接在函數體使用(匿名內部類,其實也是屬于第二種實現方式的特例。)

?

?

[cpp]?view plain?copy
  1. void?java_thread()??
  2. {??
  3. ??
  4. ?????Thread?t?=?new?Thread(new?Runnable(){??
  5. ????????????public?void?run(){??
  6. ? ? ? ? ? ?// run方法具體重寫
  7. ? ??mSoundPoolMap.put(index,?mSoundPool.load(filePath,?index));??
  8. ????????????getThis().LoadMediaComplete();??
  9. ????????????}});??
  10. ????????t.start();??
  11. }??

?

?

?

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

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

相關文章

16 --刪除排序數組中的重復項

文章目錄1.問題描述2.代碼實現1.問題描述 給定一個排序數組&#xff0c;你需要在 原地 刪除重復出現的元素&#xff0c;使得每個元素只出現一次&#xff0c;返回移除后數組的新長度。 不要使用額外的數組空間&#xff0c;你必須在 原地 修改輸入數組 并在使用 O(1) 額外空間的…

jquery評分效果Rating精華版

參考&#xff1a;https://blog.csdn.net/bluceyoung/article/details/8573629轉載于:https://www.cnblogs.com/yingyigongzi/p/9400489.html

NVIDIA助力SiemensPLMSoftware“工業4.0創新實驗室”,攜手推進中國制造創新之路

今日&#xff0c;NVIDIA宣布為SiemensPLMSoftware在北京建成的“工業4.0創新實驗室”提供了支持。該實驗室配備SiemensPLMSoftware全面的產品生命周期管理解決方案&#xff0c;結合第三方硬件&#xff0c;向中國制造企業展示“數字化企業”的全景圖。實驗室的工作站全部配備NVI…

java中的native方法

一. 什么是Native Method簡單地講&#xff0c;一個Native Method就是一個java調用非java代碼的接口。一個Native Method是這樣一個java的方法&#xff1a;該方法的實現由非java語言實現&#xff0c;比如C。這個特征并非java所特有&#xff0c;很多其它的編程語言都有這一機制&a…

17--合并兩個有序數組

文章目錄1.問題描述2.代碼實現1.問題描述 給你兩個有序整數數組 nums1 和 nums2&#xff0c;請你將 nums2 合并到 nums1 中&#xff0c;使 nums1 成為一個有序數組。 說明: 初始化 nums1 和 nums2 的元素數量分別為 m 和 n 。 你可以假設 nums1 有足夠的空間&#xff08;空間…

Maven 添加本地 jar 包、添加依賴 jar 文件到本地 Maven 倉庫、引用本地 jar

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 把要用的jar放在固定位置&#xff1a; 2.打開CMD&#xff0c;進入到libs文件夾: 3.運行如下命令&#xff1a; mvn install:install-…

如鵬網 net高級技術 第二章 委托和事件(復習)

委托 委托是一種數據類型&#xff0c;可以聲明委托類型變量。 委托是一種可以指向方法的數據類型。 聲明委托的方式:delegate返回值類型 委托類型名(參數)   比如  delegate void MyDel(int n) 注意這里的除了前面的delegate&#xff0c;剩下部分和聲明一個函數一樣&#…

黃文俊:Serverless小程序后端技術分享

歡迎大家前往騰訊云社區&#xff0c;獲取更多騰訊海量技術實踐干貨哦~ 黃文俊&#xff0c;現任騰訊云SCF無服務器云函數高級產品經理&#xff0c;多年企業級系統開發和架構工作經驗&#xff0c;對企業級存儲、容器平臺、微服務架構、無服務器計算等領域均有涉獵。今天講的是怎么…

最少編碼原則

本文作者是一位資深軟件工程師&#xff0c;他根據多年的編程經驗&#xff0c;把自己的觀點組織整理成本文&#xff0c;希望能給大家一點啟發。 “最少編碼原則”并不是說寫的代碼少到令意思表達不清楚。其實在很多情況下&#xff0c;可以只寫幾行代碼就能執行相同的邏輯&#x…

什么是標記接口

標識接口的作用 標識接口是沒有任何方法和屬性的接口。標識接口不對實現它的類有任何語義上的要求&#xff0c;它僅僅表明實現它的類屬于一個特定的類型。 標接口在Java語言中有一些很著名的應用&#xff0c;比如java.io.Serializable和java.rmi.Remote等接口便是標識接口。標識…

18--兩數之和 II - 輸入有序數組

文章目錄1.問題描述2.解題代碼1.問題描述 給定一個已按照升序排列 的有序數組&#xff0c;找到兩個數使得它們相加之和等于目標數。 函數應該返回這兩個下標值 index1 和 index2&#xff0c;其中 index1 必須小于 index2。 說明: 返回的下標值&#xff08;index1 和 index2&a…

阿里巴巴 連接池 druid 的使用、maven依賴

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. Druid是一個JDBC組件&#xff0c;它包括三部分&#xff1a; DruidDriver 代理Driver&#xff0c;能夠提供基于Filter&#xff0d;…

Oracle數據庫(二)—— 基本的SQL SELECT語句

&#xff08;一&#xff09;SQL語句分為一下三種類型 DML:Date Manipulation Language 數據操縱語言DDL&#xff1a;Data Definition Language 數據定義語言DCL&#xff1a;Data Control Language 數據控制語言DML&#xff1a;用于查詢與修改數據記錄 包括如下SQL語句&#xff…

簡單 3 步實現高效編程

本文的內容可能部分開發者已經了解&#xff0c;并且已經按照這些方法實施了。但本文還是想強調這些方法&#xff0c;因為這些簡單的方法可以讓你的工作更加高效。要想實現高效編程&#xff0c;最主要的是集中注意力&#xff0c;但這往往也是比較難以實現的&#xff0c;因為你在…

bootstrap table footerFormatter用法 統計列求和 sum、average等

其實上一篇blog里已經貼了代碼&#xff0c;簡單解釋一下吧&#xff1a; 1、showFooter: true,很重要&#xff0c;設置footer顯示&#xff1a; $(cur_table).bootstrapTable({url: /etestpaper/getPaperQType,method: get,queryParams: {strParentID: parentid},ajaxOptions: {s…

19--兩數之和

文章目錄1.題目要求2.代碼詳情1.題目要求 2.代碼詳情 java:暴力求解法hashmap法 class Solution {// 方法一&#xff1a;暴力求解法// public int[] twoSum(int[] nums, int target) {// int n nums.length;// for (int i0; i<n; i){// for (int ji1; j…

單利設計模式

單利設計模式 A&#xff1a;保證對象在內存中只有一個。 B&#xff1a;如何保證&#xff1f; **不能讓其他類來創建對象。 **本類中要創建一個本類對象。 **對外提供公共的訪問。 C&#xff1a;步驟 我們的類是Student **private Student(){} **Student s new Student(); **p…

MVC表示層框架——Velocity技術

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Velocity&#xff0c;名稱字面翻譯為&#xff1a;速度、速率、迅速&#xff0c;用在Web開發里&#xff0c;用過的人可能不多&#xff0c…

redis的配置文件

redis的配置文件 之前在實習的時候才開始接觸redis&#xff0c;隨著對redis的理解加深&#xff0c;才慢慢明白它的強大&#xff0c;也逐漸對他的配置有了一定的了解。下面就分享給大家&#xff0c;以便日后查看。 位置 redis的配置文件名為redis.conf在它的安裝目錄下。 參數說…