1. 程式人生 > >什麼是執行緒 前臺執行緒與後臺執行緒的區別

什麼是執行緒 前臺執行緒與後臺執行緒的區別

一個程式執行起來都會生成一個程序,每個程序都有一個預設的執行緒,這個執行緒叫做主執行緒,這個主執行緒又稱為UI執行緒。
.net環境中使用thread建立的執行緒預設情況下是前臺執行緒,即執行緒屬性IsBackground=false,在程序中,只要有一個前臺執行緒未退出,程序就不會終止。主執行緒就是一個前臺執行緒,而後臺執行緒不管執行緒是否結束,只要所有的前臺執行緒都退出後,程序就會自動終止。
一般後臺執行緒處理時間較短的任務,而前臺執行緒一般用於處理需要長時間等待的任務。
一個程序只有在所有的前臺執行緒都結束,整個執行緒才會結束,如果前臺執行緒都結束,但還有後臺執行緒在執行,那麼,所有的後臺執行緒都會被立刻結束。

相關推薦

C# 前臺執行後臺執行

由於時間片的原因,雖然所有執行緒在微觀上是序列執行的,但在巨集觀上可以認為是並行執行。 執行緒有兩種型別:前臺和後臺。我們可以通過執行緒屬性IsBackground=false來指定執行緒的前後臺屬性(預設是前臺執行緒)。 區別是:前臺執行緒的程式,必須等所有的前臺執行緒執行完畢後才能

什麼是執行 前臺執行後臺執行區別

一個程式執行起來都會生成一個程序,每個程序都有一個預設的執行緒,這個執行緒叫做主執行緒,這個主執行緒又稱為UI執行緒。 .net環境中使用thread建立的執行緒預設情況下是前臺執行緒,即執行緒屬性IsBackground=false,在程序中,只要有一個前臺執

前臺執行後臺執行區別

.Net的公用語言執行時(Common Language Runtime,CLR)能區分兩種不同型別的執行緒:前臺執行緒和後臺執行緒。這兩者的區別就是:應用程式必須執行完所有的前臺執行緒才可以退出;而

關於redis的單執行後臺執行的原始碼分析

前言: 通常大家都會說redis是單執行緒的,這個理解其實也沒錯。 redis的命令處理基本上都是單執行緒處理的,除了個別任務會fork子程序進行處理。 分析版本:redis 3.0.7 其實r

Android的UI設計後臺執行互動

本文將討論Android應用程式的執行緒模型以及如何使用執行緒來處理耗時較長的操作,而不是在主執行緒中執行,保證使用者介面(UI)的流暢執行。 本文還將闡述一些使用者介面(UI)中與執行緒互動的API。 UI使用者介面執行緒當應用程式啟動時,系統會為應用程式建立一個主執行緒

Android中UI執行後臺執行互動設計的5種方法

我想關於這個話題已經有很多前輩討論過了。今天算是一次學習總結吧。 在android的設計思想中,為了確保使用者順滑的操作體驗。一些耗時的任務不能夠在UI執行緒中執行,像訪問網路就屬於這類任務。因此我們必須要重新開啟一個後臺執行緒執行這些任務。然而,往往這些任務最終又會直

【多執行】Thread.interrupted()thread.isInterrupted()的區別

在Java的執行緒基本操作方法中,有兩種方式獲取當前執行緒的isInterrupt屬性。一種是物件方法thread.isInterrupted(),另一種是Thread類的靜態方法Thread.interrupted()。這兩個方法看似相同,實際上是有區別的,我們來看看Jav

C++ 11 多執行下std::unique_lockstd::lock_guard的區別和用法

這裡主要介紹std::unique_lock與std::lock_guard的區別用法 先說簡單的 一、std::lock_guard的用法 std::lock_guard其實就是簡單的RAII封裝,在建構函式中進行加鎖,解構函式中進行解鎖,這樣可以保證函式退出時,鎖一定被釋放。 簡單來說,就是防止開

Netty學習之旅------原始碼分析Netty執行本地分配機制PooledByteBuf執行級物件池原理分析

final PoolArena<byte[]> heapArena; //使用輪叫輪詢機制,每個執行緒從heapArena[]中獲取一個,用於記憶體分配。 final PoolArena<ByteBuffer> directArena;

執行中的yieldsleep方法的區別

轉載出:http://www.cnblogs.com/wdfrog/archive/2013/04/24/3039475.html wait會放棄物件鎖而notify不會放棄物件鎖,需要通過推出同步程式碼塊,或者呼叫wait以放棄物件鎖,讓被喚醒的執行緒執行 當執行緒在執

程序執行,訊號量互斥量的區別

什麼是程序? 程序是一個程式正在執行的例項。每個這樣的例項都有自己的地址空間和執行狀態。 程序有一個PID(Process ID,程序標識),用以區分各個不同的程序。核心記錄程序的PID與狀態,並根據這些資訊來分配系統資源(如記憶體等)。 當核心產

執行之實現Runnable繼承Thread的區別

我在上一個部落格說了兩種實現多執行緒的方法,實現Runnable介面與繼承Thread類,表面上看他們都沒有什麼區別,但在實際使用中繼承Thread的較少,實現Runnable的較多。這說明他們之間還是有很大的區別的,下面我們看一下它們的區別:我們首先給他們設定一個環境,Pe

Linux 下後臺執行程式,檢視和關閉後臺執行程式

1、執行.sh檔案 直接用./sh 檔案就可以執行,但是如果想後臺執行,即使關閉當前的終端也可以執行的話,需要nohup命令和&命令。 (1)&命令           功能:加在一個命令的最後,可以把這個命令放在後臺執行 (2)nohup命令

前臺執行後臺執行區別執行池的優缺點和使用場景

1.執行緒的和程序的關係以及優缺點 windows系統是一個多執行緒的作業系統。一個程式至少有一個程序,一個程序至少有一個執行緒。程序是執行緒的容器,一個C#客戶端程式開始於一個單獨的執行緒,CLR(公共語言執行庫)為該程序建立了一個執行緒,該執行緒稱為主執行緒。例如當我們建立一個C#控制檯

Python 執行前臺執行後臺執行生命週期

import threading import time import win32api #引用系統函式 class Mythread(threading.Thread): #繼承threading.Thread def run(self): #run重寫,

用PHP實現守護程序任務後臺執行執行(php-resque使用說明)

訊息佇列處理後臺任務帶來的問題 專案中經常會有後臺執行任務的需求,比如傳送郵件時,因為要連線郵件伺服器,往往需要5-10秒甚至更長時間,如果能先給使用者一個成功的提示資訊,然後在後臺慢慢處理髮送郵件的操作,顯然會有更好的使用者體驗。 為了實現類似的需求,We

執行開發(1):主執行前臺執行後臺執行,守護執行,子執行,託管執行的關係

1.主執行緒 當一個程式啟動時,就有一個程序被作業系統(OS)建立,與此同時一個執行緒也立刻執行,該執行緒通常叫做程式的主執行緒(Main Thread),因為它是程式開始時就執行的,如果你需要再建立執行緒,那麼建立的執行緒就是這個主執行緒的子執行緒。每個程序至少都有一個

Java多執行程式設計中執行的同步互斥/執行安全/Java鎖

摘要:多執行緒三個特徵:原子性、可見性以及有序性.&gt;執行緒的同步與互斥?(同步執行緒與非同步執行緒,執行緒同步和非同步問題)&nbsp;&nbsp;1.同步:假設現有執行緒A和執行緒B,執行緒A需要往緩衝區寫資料,執行緒B需要從緩衝區讀資料,但他們之間存在一種制約

c#中委託執行的實質

delegate(委託)的概念,.Net的委託本質上就是指向函式的指標,只不過這種指標是經過封裝後型別安全的。委託和執行緒是兩個不同的概念,執行緒是動態的,委託就是一個或一組記憶體地址,是靜態的。執行緒執行時如果遇到了指向函式的指標就執行這個函式。.Net為了方便程式設計,給委託賦予了兩種方式以供呼

第六章單例模式執行——立即載入“餓漢模式”延遲載入“懶漢模式”

立即載入就是使用類的時候已經將物件建立完畢了,也稱為“餓漢模式” package test01; public class MyObject { // 建立物件 private static MyObject object = new MyObject(); private MyObjec