亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java sleep方法及中斷方式、yield方法代碼實例

 更新時間:2020年04月15日 10:47:48   作者:心悅君兮君不知-睿  
這篇文章主要介紹了Java sleep方法及中斷方式、yield方法代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

一、多線程的sleep方法

1.Thread.sleep(毫秒)

2.sleep方法是一個靜態(tài)方法

3.該方法的作用:阻塞當前線程,騰出CPU,讓給其他線程

4.sleep的異常注意事項,以及中斷休眠的一種方式及其注意點

package com.bjpowernode.java_learning;
public class D106_1_ {
	public static void main(String[] args) throws InterruptedException{
		Processer106 p1 = new Processer106();
		p1.start();
		//需求:子線程啟動后0.5s之后打斷它的休眠
		Thread.sleep(500);
		p1.interrupt();
		//這樣就會是子線程打斷休眠
		//這個底層的實現(xiàn)方法是一個調用中斷異常的方式,因此,這個休眠之后的操作就不會執(zhí)行了
		//在這個代碼中就會直接進行下一次循環(huán)
		for (int i=0;i<5;i++) {
			System.out.println(Thread.currentThread().getName()+"---->"+i);
			//下面這個語句也可以使用對象.sleep();因為sleep方法是一個靜態(tài)方法。
			//即p1.sleep(200);這個main線程也會休眠200ms
			Thread.sleep(200);
		}
	}
}
class Processer106 extends Thread{
	//Thread中的run方法不拋出異常,因此重寫run方法,在run方法的聲明位置不能使用throws
	//所以run方法中只能使用try...catch.....
	public void run() {
		for (int i=0;i<5;i++) {
			System.out.println(Thread.currentThread().getName()+"--->"+i);
			try {
				Thread.sleep(1000);
				//當前線程阻塞1s
				System.out.println(i);
			}
			catch(InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
	//m1方法是可以使用throws的
}

二、如何正確的停止一個線程(不使用interrupt方法)

使用一個flag就可以達到我們的目的

packagepackage com.bjpowernode.java_learning;
public class D106_2_InterruptSleep {
	public static void main(String[] args) throws Exception{
		Processer106_2 p = new Processer106_2();
		Thread t = new Thread(p);
		t.setName("t");
		t.start();
		//5s之后終止
		Thread.sleep(5000);
		p.run1 = false;
		//這種非異常的方法更好,因為不會拋出異常。
	}
}
class Processer106_2 implements Runnable{
	Boolean run1 = true;
	public void run() {
		for (int i=0;i<10;i++) {
			if(run1) {
				try {
					Thread.sleep(1000);
				}
				catch(InterruptedException e) {
					e.printStackTrace();
				}
				System.out.println(Thread.currentThread().getName()+"-->"+i);
			} else {
				return;
			}
		}
	}
}

三、Thread.yield

1.該方法是一個靜態(tài)方法

2.作用:給同一個優(yōu)先級的線程讓位,但是讓位時間不固定

3.和sleep方法相同,就是yield時間不固定

package com.bjpowernode.java_learning;
public class D106_3_ThreadYield {
	public static void main(String[] args) throws InterruptedException {
		Processer106_3 p = new Processer106_3();
		Thread t = new Thread(p);
		t.setName("t");
		t.start();
		//在主線程中
		for (int i=0;i<1000;i++) {
			System.out.println(Thread.currentThread().getName()+"-->"+i);
		}
	}
}
class Processer106_3 implements Runnable{
	public void run() {
		for (int i=0;i<1000;i++) {
			System.out.println(Thread.currentThread().getName()+"-->"+i);
			if(i%20 == 0) {
				Thread.yield();
			}
		}
	}
}

四、源碼:

D106_1_SleepMehthodAnalysis.java

D106_2_InterruptSleep.java

D106_3_ThreadYield.java

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Java中的HashSet詳解和使用示例_動力節(jié)點Java學院整理

    Java中的HashSet詳解和使用示例_動力節(jié)點Java學院整理

    HashSet 是一個沒有重復元素的集合。接下來通過實例代碼給大家介紹java中的hashset相關知識,感興趣的朋友一起看看吧
    2017-05-05
  • ActiveMQ安裝及部署教程圖解

    ActiveMQ安裝及部署教程圖解

    這篇文章主要介紹了ActiveMQ安裝及部署教程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • Intellij IDEA調試技巧的深入講解

    Intellij IDEA調試技巧的深入講解

    這篇文章主要給大家介紹了關于Intellij IDEA調試技巧的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-08-08
  • 2022年最新java?8?(?jdk1.8u321)安裝圖文教程

    2022年最新java?8?(?jdk1.8u321)安裝圖文教程

    這篇文章主要介紹了2022年最新java?8?(?jdk1.8u321)安裝圖文教程,截止2022年1月,官方出的jdk1.8目前已更新到8u321的版本,本文通過圖文并茂的形式給大家介紹安裝過程,需要的朋友可以參考下
    2022-08-08
  • Java中的線程池ThreadPoolExecutor細致講解

    Java中的線程池ThreadPoolExecutor細致講解

    這篇文章主要介紹了Java中的線程池ThreadPoolExecutor細致講解,線程池是一種基于池化思想管理線程的工具,經(jīng)常出現(xiàn)在多線程服務器中,如MySQL,線程過多會帶來額外的開銷,其中包括創(chuàng)建銷毀線程的開銷、調度線程的開銷等等,需要的朋友可以參考下
    2023-11-11
  • spring-data-jpa中findOne與getOne的區(qū)別說明

    spring-data-jpa中findOne與getOne的區(qū)別說明

    這篇文章主要介紹了spring-data-jpa中findOne與getOne的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • SpringMVC攔截器快速掌握上篇

    SpringMVC攔截器快速掌握上篇

    攔截器(Interceptor)是一種動態(tài)攔截方法調用的機制,在SpringMVC中動態(tài)攔截控制器方法的執(zhí)行。本文將詳細講講SpringMVC中攔截器的概念及入門案例,感興趣的可以嘗試一下
    2022-08-08
  • Java面試題沖刺第十天--MyBatis2

    Java面試題沖刺第十天--MyBatis2

    這篇文章主要為大家分享了最有價值的三道MyBatis框架面試題,涵蓋內容全面,包括數(shù)據(jù)結構和算法相關的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下
    2021-07-07
  • SpringSecurity怎樣使用注解控制權限

    SpringSecurity怎樣使用注解控制權限

    這篇文章主要介紹了SpringSecurity怎樣使用注解控制權限的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • java實現(xiàn)文件上傳下載功能

    java實現(xiàn)文件上傳下載功能

    這篇文章主要介紹了java實現(xiàn)文件上傳下載功能,上傳單個或多個文件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08

最新評論