日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java的知识点30——线程的优先级、终止线程的典型方式、获取线程基本信息的方法

發布時間:2025/4/16 java 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java的知识点30——线程的优先级、终止线程的典型方式、获取线程基本信息的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

線程的優先級 ?1-10

1. NORM_PRIORITY ?5 默認
?2. MIN_PRIORITY ?1
?3. MAX_PRIORITY ?10

注意:優先級低只是意味著獲得調度的概率低。并不是絕對先調用優先級高后調用優先級低的線程。

使用下述方法獲得或設置線程對象的優先級。
? int getPriority();

? void setPriority(int newPriority);?

/*** 線程的優先級 1-10* 1. NORM_PRIORITY 5 默認* 2. MIN_PRIORITY 1* 3. MAX_PRIORITY 10* * 概率: 不代表絕對的優先級順序* @author Administrator**/ public class PriorityTest {public static void main(String[] args) {System.out.println(Thread.currentThread().getPriority()); //5MyPriority mp=new MyPriority();Thread t1=new Thread(mp,"1");Thread t2=new Thread(mp,"2");Thread t3=new Thread(mp,"3");Thread t4=new Thread(mp,"4");Thread t5=new Thread(mp,"5");Thread t6=new Thread(mp,"6");//設置優先級在啟動前t4.setPriority(Thread.MAX_PRIORITY);t5.setPriority(Thread.MAX_PRIORITY);t6.setPriority(Thread.MAX_PRIORITY);t1.setPriority(Thread.MIN_PRIORITY);t2.setPriority(Thread.MIN_PRIORITY);t3.setPriority(Thread.MIN_PRIORITY);t1.start();t2.start();t3.start();t4.start();t5.start();t6.start();} }class MyPriority implements Runnable{@Overridepublic void run() {System.out.println(Thread.currentThread().getName()+"-->"+ Thread.currentThread().getPriority()); //5Thread.yield();}}


線程分為用戶線程守護線程

虛擬機必須確保用戶線程執行完畢

虛擬機不用等待守護線程執行完畢;如:后臺記錄操作日志、監控內存使用

守護線程:是為用戶線程服務的;jvm停止 不用等待守護線程執行完畢
默認:用戶線程jvm等待用戶線程執行完畢才會停止

/*** 守護線程:是為用戶線程服務的;jvm停止 不用等待守護線程執行完畢* 默認:用戶線程jvm等待用戶線程執行完畢才會停止* @author Administrator**/ public class DeamonTest {public static void main(String[] args) {God god=new God();You you=new You();new Thread(you).start();Thread t=new Thread(god);t.setDaemon(true);//將用戶線程調整為守護線程t.start();} }class You extends Thread{@Overridepublic void run() {for(int i=1;i<365;i++) {System.out.println("happy life...");}System.out.println("ooooo......");} } class God extends Thread{@Overridepublic void run() {for(;true;) {System.out.println("bless you...");} } }


終止線程的典型方式

終止線程我們一般不使用JDK提供的stop()/destroy()方法(它們本身也被JDK廢棄了)。通常的做法是提供一個boolean型的終止變量當這個變量置為false,則終止線程的運行

public class TestThreadCiycle implements Runnable {String name;boolean live = true;// 標記變量,表示線程是否可中止;public TestThreadCiycle(String name) {super();this.name = name;}public void run() {int i = 0;//當live的值是true時,繼續線程體;false則結束循環,繼而終止線程體;while (live) {System.out.println(name + (i++));}}public void terminate() {live = false;}public static void main(String[] args) {TestThreadCiycle ttc = new TestThreadCiycle("線程A:");Thread t1 = new Thread(ttc);// 新生狀態t1.start();// 就緒狀態for (int i = 0; i < 10; i++) {System.out.println("主線程" + i);}ttc.terminate();System.out.println("ttc stop!");} }


?? 暫停線程執行常用的方法有sleep()和yield()方法,這兩個方法的區別是:

? ? ??1. sleep()方法:可以讓正在運行的線程進入阻塞狀態,直到休眠時間滿了,進入就緒狀態

? ? ??2. yield()方法:可以讓正在運行的線程直接進入就緒狀態,讓出CPU的使用權。

獲取線程基本信息的方法

?* isAlive() ?表示線程是否還活著
?* Thread.currentThread() ? 表示當前線程
?* setName("") ?setName("") ? 表示代理對象的名稱?

?

/*** 其他方法* isAlive() 表示線程是否還活著* Thread.currentThread() 表示當前線程* setName("") setName("") 表示代理對象的名稱 * @author Administrator**/ public class InfoTest {public static void main(String[] args) throws InterruptedException {System.out.println(Thread.currentThread().isAlive());//設置名稱:真實角色+代理角色MyInfo info=new MyInfo("戰斗機");Thread t=new Thread(info);t.setName("公雞");t.start();Thread.sleep(1000);System.out.println(t.isAlive());} } class MyInfo implements Runnable{private String name;public MyInfo(String name) {super();this.name = name;}@Overridepublic void run() {System.out.println(Thread.currentThread().getName()+"-->"+name);}}

總結

以上是生活随笔為你收集整理的Java的知识点30——线程的优先级、终止线程的典型方式、获取线程基本信息的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。