java的排程、優先順序setPriority、yield、jion和守護執行緒setDaemon
package LyfPractice;
/**
* Created by fangjiejie on 2016/12/15.
*/
public class SThread {
public static void main(String[] args) {
/* S s1=new S();
S s2=new S();
s1.setName("s1號");
s2.setName("s2號");
s1.setPriority(10);
s2.setPriority(1);
s1.start();
s2.start();*/
![這裡寫圖片描述](http://img.blog.csdn.net/20161215214214639?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvU3R1YmJvcm5BY2NlcHRlZA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)M3 m3=new M3();
m3.setDaemon(true);//設定為守護執行緒
m3.start();
M1 m1=new M1();
M2 m2=new M2();
m1.setName("m1號執行緒" );
m2.setName("m2號執行緒");
m1.setPriority(10);
m2.setPriority(1);//設定執行緒的優先順序1~10
m1.start();
m1.yield();//yield明確的讓出當前執行緒的控制權
m2.start();
try {
m1.join();//當在某個程式執行流中呼叫其他執行緒的jion()方法時,呼叫執行緒將被阻塞,直到jion方法加入的 jion執行緒完成為止
} catch (InterruptedException e) {
e.printStackTrace();
}
for (int i=100;i>=0;i--){
System.out.println(Thread.currentThread().getName()+"hahahahaha");
}
}
}
class M1 extends Thread{
@Override
public void run() {
for(int i=100;i>=0;i--){
System.out.println(Thread.currentThread().getName()+": "+i);
}
}
}
class M2 extends Thread{
@Override
public void run() {
for(int i=0;i<=100;i++){
//this.yield();
System.out.println(Thread.currentThread().getName()+": "+i);
}
}
}
class M3 extends Thread{
@Override
public void run() {
for(int i=0;i<10000;i++){
System.out.println(">>");
}
}
}
setPriority():
更改執行緒的優先順序。
執行緒總是存在優先順序,優先順序範圍在1~10之間。JVM執行緒排程程式是基於優先順序的搶先排程機制。在大多數情況下,當前執行的執行緒優先順序將大於或等於執行緒池中任何執行緒的優先順序。但這僅僅是大多數情況。
yield() :
Yield()方法是暫停當前執行緒,讓同等優先權的執行緒執行。如果沒有同等優先權的執行緒,那麼Yield()方法將不會起作用。
因此,使用yield()的目的是讓相 同優先順序的執行緒之間能適當的輪轉執行。但是,實際中無法保證yield()達到讓步目的,因為讓步的執行緒還有可能被執行緒排程程式再次選中。
join()方法:
保證當前執行緒停止執行,直到該執行緒所加入的執行緒完成為止。在執行下一個執行緒
守護執行緒:
相關推薦
java的排程、優先順序setPriority、yield、jion和守護執行緒setDaemon
package LyfPractice; /** * Created by fangjiejie on 2016/12/15. */ public class SThread {
執行緒間通訊、等待喚醒機制、生產者消費者問題(Lock,Condition)、停止執行緒和守護執行緒、執行緒優先順序
1 執行緒間通訊 1.1 執行緒間通訊 其實就是多個執行緒在操作同一個資源,但是操作的動作不同。 比如一個執行緒給一個變數賦值,而另一個執行緒列印這個變數。 1.2 等待喚醒機制 wait():將執行緒等待,釋放了CPU執行權,同時將執行緒物件儲存到執行緒池中。 n
java執行緒優先順序和守護執行緒的概念
執行緒優先順序和守護執行緒的概念 優先順序 守護執行緒 守護執行緒與使用者執行緒區別 參考文獻 優先順序 java的執行緒優先順序總共有10個級別,從1到10,1為優先順序最小,10為最大。通過執行緒的setPriority(in
Java 多執行緒基礎(十一)執行緒優先順序和守護執行緒
Java 多執行緒基礎(十一)執行緒優先順序和守護執行緒 一、執行緒優先順序 Java 提供了一個執行緒排程器來監控程式啟動後進去就緒狀態的所有執行緒。執行緒排程器通過執行緒的優先順序來決定排程哪些執行緒執行。一般來說,Java的執行緒排程器採用時間片輪轉演算法使多個執行緒輪轉獲得CPU的時間片。
java第18天----生產者消費者,Lock鎖,守護執行緒,join()方法
昨天知識總結: 多執行緒 執行緒的兩種建立方式 建立Thread的子類 執行緒與任務分離 執行緒安全----重點 單例中執行緒安全的應用 執行緒的停止 執行緒 執行緒的通訊 執行緒的通訊: 分析: 需要兩個執行緒—輸入執行緒,和輸
執行緒優先順序和守護執行緒
全文概要本文主要介紹執行緒的優先順序和守護執行緒。建立的執行緒預設的優先順序是5,當然可以自行設定優先順序,優先順序為[1,10]區間的整數;java中有兩種執行緒,使用者執行緒和守護執行緒,可以通過isDaemon()來判斷,返回true表示守護執行緒;使用者執行緒一般用來
Java定時任務的幾種方法(Thread 和 Timer,執行緒池)
/** * 普通thread * 這是最常見的,建立一個thread,然後讓它在while迴圈裡一直執行著, * 通過sleep方法來達到定時任務的效果。這樣可以快速簡單的實現,程式碼如
Java併發程式設計之執行緒生命週期、守護執行緒、優先順序和join、sleep、yield
Java併發程式設計中,其中一個難點是對執行緒生命週期的理解,和多種執行緒控制方法、執行緒溝通方法的靈活運用。這些方法和概念之間彼此聯絡緊密,共同構成了Java併發程式設計基石之一。 Java執行緒的生命週期 Java執行緒類定義了New、Runnable、Running Man、Blocked和Dead
java多執行緒:4、Java對多執行緒的支援(二)後臺執行緒setDaemon、暫停執行緒yield
文章目錄 一、設定後臺執行緒 二、yield方法,暫停執行緒讓別的執行緒執行 上篇文章介紹了執行緒實現方式、執行緒的隨機性,大家如需瞭解可參考 java多執行緒:3、Java對多執行緒的支援(一)執行緒實現方式、執行緒的隨機性 這篇我們來看看後臺執行緒setD
(十)java併發程式設計--建立和啟動執行緒(java.lang.Thread 、java.lang.Runnable)
執行緒建立的幾種方式. 建立和啟動一個執行緒 建立一個執行緒. Thread thread = new Thread(); 啟動java執行緒. thread.start(); 這兩個例子並沒有執行執行緒執行體,執行緒將會啟動後然後
Java主執行緒和其餘執行緒的區別和實踐(Main、Runnable、Thread)
在日常的開發中,很多一些開發中較常見的問題,還是需要去仔細研究一下,最重要的還是實踐。以小見大。 一、Java執行緒中。Main、Runnable和Thread。 相信在工作中,只要是有用到多執行緒非同步程式設計,最起碼都要和這三個打交道。 1、每個Java應用程式
java佇列、棧和多執行緒結合使用的例子
剛來公司幾天,無意中聽到其他的開發組有用到佇列這個知識點,我沒用過也沒了解過,今天花時間補補這塊知識,整理了網上的一些資料。 佇列其實 所指生活中排隊的現象,去商場購物,付款時需要排隊, 買飯時需要排隊, 好多事情都是需要排隊, 排在第一位的則先處理,結束後, 後面的人都
【java多執行緒】守護執行緒、執行緒停止、volatile的深入瞭解
文章目錄 執行緒的優雅停止 守護執行緒 volatile關鍵字 執行緒的優雅停止 在多執行緒的操作之中如果要啟動多執
二、JAVA多執行緒:深入理解Thread建構函式(Thread、Runnable、守護執行緒、ThreadGroup)
本章主要介紹了所有與Thread有關的建構函式,執行緒的父子關係(並非繼承關係,而是一種包含關係),Thread和ThreadGroup之間的關係,Thread與虛擬機器棧的關係(學習這部分內容需要讀者有JVM的相關基礎,尤其是對棧記憶體要有深入的理解),最後還介紹了守護執行緒的概念、特點和使用場景
Java併發性和多執行緒介紹、優缺點
在過去單核CPU時代,單任務在一個時間點只能執行單一程式。之後發展到多工階段,計算機能在同一時間點並行執行多工或多程序。雖然並不是真正意義上的“同一時間點”,而是多個任務或程序共享一個CPU,並交由
主執行緒、守護執行緒、非守護執行緒
主執行緒 main,但不是守護執行緒。 守護執行緒 是指在程式執行的時候在後臺提供一種通用服務的執行緒。如gc。 非守護執行緒 也叫使用者執行緒,由使用者建立。 關係: 主執行緒和守護執行緒一起銷燬; 主執行緒和非守護執行緒互不影響。 例如: package
程序、執行緒和多執行緒基本概念
程序、執行緒和多執行緒基本概念 一、概念 1、程序(process) 狹義定義:程序就是一段程式的執行過程。 廣義定義:程序是一個具有一定獨立功能的程式關於某個資料集合的一次執行活動。它是作業系統動態執行的基本單元,在傳統的作業系統中,程序既是基本的分配單元,也是基本的執行單元。
程序間的資料共享、程序池的回撥函式和執行緒初識、守護執行緒
一、程序的資料共享 程序間資料是獨立的,可以藉助於佇列或管道實現通訊,二者都是基於訊息傳遞的 雖然程序間資料獨立,但可以通過Manager實現資料共享。 把所有實現了資料共享的比較便捷的類都重新又封裝了一遍,並且在原有的multiprocessing基礎上增加了新
使用python的requests、xpath和多執行緒爬取糗事百科的段子
程式碼主要使用的python中的requests模組、xpath功能和threading多執行緒爬取了糗事百科中段子的內容、圖片和閱讀數、段子作者的性別,年齡和頭像。 # author: aspiring import requests from lxml import
python用map()函式和多執行緒threading、Thread採集注意事項
import re import requests from threading import Thread def getUrl(): url = 'http://www.xiaohuar