1. 程式人生 > >建立執行緒的兩種方式以及區別

建立執行緒的兩種方式以及區別

1.繼承Thread類

2.實現Runnable介面

區別:

採用繼承Thread類:

  (1)程式碼簡單,直接通過Thread的構造方法建立執行緒,且訪問當前執行緒時,直接呼叫this.即可獲得當前執行緒。

   (2)因為已經繼承Thread類,所以不能繼承其他父類。

   (3)若要兩個執行緒之間共享變數時,需要在宣告為static變數。

採用實現Runnable介面:

  (1)執行緒只是實現了Runnable介面,還可以繼承其他類和實現其他介面;

   (2)可以多個執行緒之間共享同一個目標物件,非常適合多個執行緒處理同一份資源的情況;

   (3)程式碼稍微複雜一些,若要訪問當前執行緒,必須使用Thread.currentThread()方法。

   當沒有宣告static變數時:

       Runnable可以實現資源共享但是Thread不能,原因:

        1.因為一個執行緒只能啟動一次,通過Thread實現執行緒時,執行緒和執行緒所要執行的任務是捆綁在一起的。也就使得一個任務只能             啟動一個執行緒,不同的執行緒執行的任務是不相同的,所以沒有必要,也不能讓兩個執行緒共享彼此任務中的資源。

         2.一個任務可以啟動多個執行緒,通過Runnable方式實現的執行緒,實際是開闢一個執行緒,將任務傳遞進去,由此執行緒執行。可以               例項化多個 Thread物件,將同一任務傳遞進去,也就是一個任務可以啟動多個執行緒來執行它。這些執行緒執行的是同一個任                 務,所以他們的資源是共享。

相關推薦

spring4+ThreadPoolTaskExecutor建立執行 方式傳送郵件

百度雲程式碼下載地址包含測試用例 :點選後跳轉 ThreadService package com.konglingfu.service; public interface ThreadService extends Runnable{ public void se

建立執行方式的比較

通過鐵路售票程式來理解實現多執行緒的兩種方法:通過java.lang.Thread類和通過Runnable介面  java中有兩種實現多執行緒的方式。一是直接繼承Thread類,二是實現Runnable介面。那麼這兩種實現多執行緒的方式在應用上有什麼區別呢?  為了回答這個問

開始一個執行方式區別

java 開始一個現成有兩中方法 :一是直接呼叫Thread例項的start()方法,二是將Runable例項傳給一個Thread例項然後呼叫它的start()方法。 首先讓我們看看Thread類的start() 方法: public synchronized void st

建立執行方式以及區別

1.繼承Thread類 2.實現Runnable介面 區別: 採用繼承Thread類:   (1)程式碼簡單,直接通過Thread的構造方法建立執行緒,且訪問當前執行緒時,直接呼叫this.即可獲得當前執行緒。    (2)因為已經繼承Thread類,所以不能繼承其他父類。

動態代理的方式以及區別

動態代理的兩種方式,以及區別。 JDK動態代理:利用反射機制生成一個實現代理介面的匿名類,在呼叫具體方法前呼叫InvokeHandler來處理。 CGlib動態代理:利用ASM(開源的Java位元組碼編

建立String的方式區別

在建立String物件時,通常來講,有兩種方式,一是new型:String s = new String("abc");另一種是雙引號型:String s = "abc";那麼這兩種方式有什麼區別呢? 答:這兩種方法生成的字串物件,在記憶體中的存取機制不同。 Java為St

C# 修改儲存 配置檔案的方式以及區別

第一種為 Properties.Settings.Default.引數名= 引數值; Properties.Settings.Default.Save();  在第一次執行時會讀取App.config裡的初始值 但是一旦呼叫Save方法後,Settings裡“使用者”

Java啟動執行方式總結

先檢視jdk幫助文件,這麼進行描述執行緒:執行緒是程式中的執行執行緒,可以由jvm來執行一個或者多個執行緒。方法1:繼承Thread 類 重寫run方法即可如下程式碼:public class Treadtest {//主方法public static void main(S

執行實現的方式及其區別

繼承Thread public class Demo2_Thread { public static void main(String[] args) { MyThrea

實現多執行方式區別和好處有哪些

 一種是擴充套件java.lang.Thread類 另一種是實現java.lang.Runnable介面 區別就是:第一種是擴充套件,第二種是實現 好處就是: 在實際開發中通常以實現Runnable介面為主,因為實現Runnable介面相比繼承Thread類可以避免繼承的侷

執行實現方式區別Thread Runnable

多執行緒兩種實現方式的區別多執行緒的兩種實現方式 Thread Runnable 兩者的區別首先:使用Runnable介面與Thread類相比較,解決了單根繼承的定義侷限性,所以不管後面的區別和聯絡是什麼,至少這一點上就已經下了死定義– 如果要使用一定是用Runnable介面

day 33 什麼是執行? 建立方式. 守護執行. 鎖. 死鎖現象. 遞迴鎖. GIL鎖

一.執行緒       1.程序:資源的分配單位      執行緒:cpu執行單位(實體)   2.執行緒的建立和銷燬開銷特別小   3.執行緒之間資源共享,共享的是同一個程序中的資源   4.執行緒之間不是隔離的   5.執行緒可不需要 

實現多執行方式及其區別

實現多執行緒有兩種方式:(自JDK1.5之後有三種,最後一種並不常用)    1.繼承Thread類    2.實現Runnable介面(Callable介面) 一個類如果實現了Runnable介面或者繼承了Thread類,那麼它就是一個多執行緒類,如果是要實現多執行緒,還需要重寫run()方法,所以ru

java執行實現方式區別,你所不知道的小細節

/* * 建立執行緒時要繼承Runnable介面 * 不要把寶貴的單繼承機會佔有掉 * 兩種方式有點不用,實現Runnable * 介面時多個執行緒中執行一個 * Runnable介面實現類時,run方法資源共享 * 而繼承Thread時,run方

執行實現區別-繼承Thread和實現Runable

一  前面一種比較簡潔。後面一種更靈活,因為java可以實現多個介面,但是隻能繼承一個類 二  適合於資源的共享 如果不涉及 多執行緒直接資源共享用Thread 比較好,否則實現Runable較好 Thread其實也是實現了Runnable介面  Thread中的start(

操作系統,編程語言分類,執行python方式,變量,內存管理,定義變量的三個特征

什麽 height 取代 沒有 一個 Coding 開發 軟件 簡單 操作系統 1、什麽是操作系統 操作系統位於計算機硬件與應用軟件之間 是一個協調、管理、控制計算機硬件資源與軟件資源的控制程序2、為何要有操作系統? 1、控制硬件 2、把對硬件的復雜

vue 路由傳參 params 與 query方式區別

fine 分享 文件 路由 註意 undefine 方法 router 由於   初學vue的時候,不知道如何在方法中跳轉界面並傳參,百度過後,了解到兩種方式,params 與 query。然後,錯誤就這麽來了:    router文件下index.js裏面,是這麽定義路由

css實現透明的方式及其區別

白色 class 子節點 new 透明度 區別 方式 ron pre 一、opacity:0~1 值越高,透明度越低,下面為示例 選擇器{ opacity:0.5 } 選擇器匹配到的節點們,包括節點們的孩子節點,都會實現%50透明,另 0.5 可直

建立資源的方式

命令 vs 配置檔案 Kubernetes 支援兩種方式建立資源: 1. 用 kubectl 命令直接建立 kubectl run nginx-deployment --image=nginx:1.7.9 --replicas=2   在命令列中通過引數指定資源的屬性。 2.

windows系統中建立執行常用的函式及其區別

在windows系統中建立執行緒的函式有以下幾個方法: CreadThread,AfxBeginThread,_beginthread,_beginthreadex。 一、CreateThread HANDLE WINAPI CreateThread( __in