1. 程式人生 > >Java執行緒---執行緒的建立,排程以及執行緒狀態

Java執行緒---執行緒的建立,排程以及執行緒狀態

執行緒是程序中執行運算的最小單位,程序執行時可以產生多個執行緒,執行緒必須在程序中執行。執行緒可以完成一個獨立任務的順序控制流程。

一個程式至少自動擁有一個執行緒,為主執行緒。(public void main()方法是主執行緒的入口,Java程式執行時首先執行這個方法)。

編寫一個執行緒的過程:
1.定義一個執行緒,指明這個執行緒所要執行程式碼,完成的功能
2.建立執行緒物件
3.啟動執行緒(start() 方法啟動執行緒)
4.終止執行緒

2.建立執行緒的方法
(1)使用 Thread 建立執行緒
建立執行緒時繼承Thread類重寫run()方法。執行緒執行的程式碼寫在run()方法中。
並使用start()方法啟動執行緒。
定義一個類繼承Thread類,實現run()方法,建立執行緒
這裡寫圖片描述

(2)使用Runnable介面建立執行緒
類通過實現Runnable介面,實現介面中run()方法建立執行緒。
這裡寫圖片描述

Thread類中常用方法
這裡寫圖片描述

執行緒的狀態
執行緒的生命週期分為四個階段:新生,可執行,阻塞,死亡。

執行緒排程
1.執行緒優先順序
執行緒優先順序為1-10,預設值是5。每個優先順序對應一個Thread類的公用靜態常量。
public static final int NORM_PRIORITY=5;
public static final int MIN_PRIORITY=1;
public static final int MAX_PRIORITY=10;
其優先順序可以通過 執行緒物件名.setPriority(int grade) 更改。
2.執行緒排程的方法
(1) join()方法 阻塞執行緒(當前執行緒暫停執行,知道另外執行緒執行完畢以後,執行緒在繼續執行。)
這裡寫圖片描述

(2)sleep()方法阻塞執行緒(當前執行緒進入休眠時間,休眠時間結束繼續執行)
這裡寫圖片描述

(3)yield()方法阻塞執行緒(當前執行緒暫停執行,若無其他等待執行的執行緒則繼續執行當前執行緒)
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

相關推薦

Java執行---執行建立排程以及執行狀態

執行緒是程序中執行運算的最小單位,程序執行時可以產生多個執行緒,執行緒必須在程序中執行。執行緒可以完成一個獨立任務的順序控制流程。 一個程式至少自動擁有一個執行緒,為主執行緒。(public void main()方法是主執行緒的入口,Java程式執行時首先執

java執行總結--synchronized關鍵字原理以及相關的鎖

在多執行緒程式設計中,synchronized關鍵字非常常見,當我們需要進行“同步”操作時,我們很多時候需要該該關鍵字對程式碼塊或者方法進行鎖定。被synchronized鎖定的程式碼塊,只能同時有一條執行緒訪問該程式碼塊。 上面是很多人的認識,當然也是我之前對synchronized關鍵字的淺

java中為什麼Hashtable是執行安全的而HashMap是執行不安全的?還有ArrayList為什麼是執行不安全的Vector是執行安全的??

文章目錄 一、HashMap解析 二、Hashtable解析 三、Collections.synchronizedMap()解析 四、ConcurrentHashMap 六、ArrayList為什麼是執行緒不安全的,Vector是執行緒安全的?

Java:寫2個執行其中一個執行列印1-52另一個執行列印A-Z列印順序應該是12A34B56C...5152Z。

寫2個執行緒,其中一個執行緒列印1-52,另一個執行緒列印A-Z,列印順序應該是12A34B56C...5152Z   多執行緒程式設計:使用Runnable介面例項建立執行緒。使用執行緒等待方法wait(); package com.java瘋狂講義; public

Java執行-----執行池的使用原理以及舉例實現(三)(四):使用樣例及如何配置執行池大小

三.使用示例   前面我們討論了關於執行緒池的實現原理,這一節我們來看一下它的具體使用: public class Test { public static void main(String[] args) { ThreadPoolExe

VS2010/MFC入門程式設計十七(多執行建立包括工作執行和使用者介面執行

1.MFC多執行緒簡介 MFC對多執行緒進行了一層簡單的封裝,在Visual C++中每個執行緒都是從CWinThread類繼承而來的。每一個應用程式的執行都有一個主執行緒,這個主執行緒也是從CWinThread類繼承而來的。可以利用CWinThread物件建立應用程式執行的其它執行緒。 MFC用CW

java進階 執行池 join用法總結:thread4.join();方法就表明thread4.join();這個執行受到貴客待遇直到這個執行執行被插入這個方法的載體執行才可以執行

那個執行緒呼叫join 舉例 thread4.join();方法,就表明thread4.join();這個執行緒受到貴客待遇,直到這個執行緒執行完,被插入這個方法的載體執行緒才可以執行。 package javajinjie.char29.threadpool; pu

寫兩個執行一個執行列印 1~52另一個執行列印A~Z 列印順序是12A34B...5152Z

這個題目就是要用wait()和notify()方法來控制兩個執行緒的執行 看如下程式碼: 當標誌位flag為1 時,列印數字;否則列印字母 count即為列印的數字 class Print { private int flag = 1;

寫兩個執行一個執行列印 1~ 52另一個執行列印A~Z 列印順序是12A34B...5152Z;

寫兩個執行緒,一個執行緒列印 1~ 52,另一個執行緒列印A~Z, 列印順序是12A34B…5152Z; 第一種方式: class Print{ private int flag = 1; private int count = 1; public synch

spark中executor執行Driver傳送的task放入執行池中執行原理

import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class ThreadPool { public static void main(

eclipse建立動態web專案資料庫Hbase(只是Dynamic Web project的建立無程式碼執行

一、開啟Hadoop與Hbase (因為我的Hadoop沒有完全配置好,所以我的Hadoop開啟命令比較繁瑣) 二、開啟eclipse,建立Dynamic Web project 三、引入tomcat的jar包(如果專案本來就有tomcat的jar包

Java ssm專案設定定時任務每天定點執行

1,首先在配置檔案中定義標籤對映class檔案: <bean id="WorkorderScanTask" class="com.tdmh.modules.workorder.utils.WorkorderScanTask" />        <task:

Java】try中有returnfinally塊執行問題

對於如下的一段程式: package try_catch_finally_return; public class TCFRtest { private static void Test1() { try { System.out.println("tr

shell指令碼操作mysql資料庫使用mysql的-e引數可以執行各種sql的(建立刪除改、查)等各種操作

來源:http://blog.163.com/xychenbaihu@yeah/blog/static/13222965520114116289991/ mysql  -hhostname -Pport -uusername -ppassword  -e  相關mysql的

解決命令行執行shell腳本成功但crontab執行失敗

ges config 腳本監控 由於 data 路徑 amp 導致 bsp 實際生產案例 生產機房自建PPTP客戶端通過撥號連接到生產機房,但是一旦客戶端網絡是意外斷線再重新撥號 會產生IP沖突,於是寫了一個腳本監控PPTP的IP是否有多個(一般沖突以後會生成2個IP)

Java:通訊錄類Address建立使用

//定義一個通訊錄類Address。它包含姓名、電話以及E-mail地址,方法有顯示所有的成員變數。並定義起始類,用構造方法建立3個物件,顯示通訊錄資訊。 public class Address { private String name; p

Java虛擬機器-物件的建立物件頭

建立 new 檢查new指令的引數,是否能在常量池中定位到一個類的引用符號 檢查該類是否被載入、解析和初始化。 沒有則執行相應的過程 分配記憶體 存在2中情況。取決於java記憶體堆是否規則

cocos2dx-3.11 使用建立Lua專案以及執行自定義場景

第一節  建立專案 現在用cocos2dx3.11版本寫一個小遊戲,首先建立專案,在終端裡輸入如下指令: cd/Users/xiaosong1531/Desktop/cocos2d-x-3.11.1/tools/cocos2d-console/bin 進入到bin目錄之後,

java線程總結--synchronized關鍵字原理以及相關的鎖

public 關鍵字 多線程 java 文章 在多線程編程中,synchronized關鍵字非常常見,當我們需要進行“同步”操作時,我們很多時候需要該該關鍵字對代碼塊或者方法進行鎖定。被synchronized鎖定的代碼塊,只能同時有一條線程訪問該代碼塊。上面是很多人的認識,當然也是我之前