最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java sleep方法及中斷方式、yield方法代碼實(shí)例

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

一、多線程的sleep方法

1.Thread.sleep(毫秒)

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

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

4.sleep的異常注意事項(xiàng),以及中斷休眠的一種方式及其注意點(diǎn)

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();
		//這樣就會是子線程打斷休眠
		//這個底層的實(shí)現(xiàn)方法是一個調(diào)用中斷異常的方式,因此,這個休眠之后的操作就不會執(zhí)行了
		//在這個代碼中就會直接進(jìn)行下一次循環(huán)
		for (int i=0;i<5;i++) {
			System.out.println(Thread.currentThread().getName()+"---->"+i);
			//下面這個語句也可以使用對象.sleep();因?yàn)閟leep方法是一個靜態(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);
				//當(dāng)前線程阻塞1s
				System.out.println(i);
			}
			catch(InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
	//m1方法是可以使用throws的
}

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

使用一個flag就可以達(dá)到我們的目的

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;
		//這種非異常的方法更好,因?yàn)椴粫伋霎惓!?
	}
}
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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • MybatisPlus如何自動生成映射文件

    MybatisPlus如何自動生成映射文件

    這篇文章主要介紹了MybatisPlus如何自動生成映射文件,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 新手入門了解ArrayList擴(kuò)容機(jī)制

    新手入門了解ArrayList擴(kuò)容機(jī)制

    這篇文章主要介紹了新手入門了解ArrayList擴(kuò)容機(jī)制,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • 實(shí)例解析Java關(guān)于static的作用

    實(shí)例解析Java關(guān)于static的作用

    只要是有學(xué)過Java的都一定知道static,也一定能多多少少說出一些作用和注意事項(xiàng)。文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • javaWeb使用servlet搭建服務(wù)器入門

    javaWeb使用servlet搭建服務(wù)器入門

    這篇文章主要為大家詳細(xì)介紹了javaWeb使用servlet搭建服務(wù)器入門,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • SpringBoot3整合郵件服務(wù)實(shí)現(xiàn)郵件發(fā)送功能

    SpringBoot3整合郵件服務(wù)實(shí)現(xiàn)郵件發(fā)送功能

    本文介紹了spring boot整合email服務(wù),實(shí)現(xiàn)發(fā)送驗(yàn)證碼,郵件(普通文本郵件、靜態(tài)資源郵件、附件郵件),文中通過代碼示例介紹的非常詳細(xì),堅(jiān)持看完相信對你有幫助,需要的朋友可以參考下
    2024-05-05
  • Java如何優(yōu)雅關(guān)閉異步中的ExecutorService

    Java如何優(yōu)雅關(guān)閉異步中的ExecutorService

    在并發(fā)編程領(lǐng)域,Java的ExecutorService是線程池管理的關(guān)鍵接口,這篇文章主要為大家介紹了如何優(yōu)雅關(guān)閉異步中的ExecutorService,需要的可以了解下
    2025-02-02
  • 使用JAVA8 filter對List多條件篩選的實(shí)現(xiàn)

    使用JAVA8 filter對List多條件篩選的實(shí)現(xiàn)

    這篇文章主要介紹了使用JAVA8 filter對List多條件篩選的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 關(guān)于spring?data?jpa?模糊查詢like的坑點(diǎn)

    關(guān)于spring?data?jpa?模糊查詢like的坑點(diǎn)

    這篇文章主要介紹了關(guān)于spring?data?jpa?模糊查詢like的坑點(diǎn),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • JAVA時間戳-Calendar類使用(包括set,get,add方法)

    JAVA時間戳-Calendar類使用(包括set,get,add方法)

    這篇文章主要介紹了JAVA時間戳-Calendar類使用(包括set,get,add方法),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • lazy?init控制加載在Spring中如何實(shí)現(xiàn)源碼分析

    lazy?init控制加載在Spring中如何實(shí)現(xiàn)源碼分析

    這篇文章主要為大家介紹了lazy?init控制加載在Spring中如何實(shí)現(xiàn)源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09

最新評論

沂源县| 潜江市| 靖宇县| 常宁市| 开封县| 炉霍县| 赤壁市| 石门县| 南漳县| 嘉兴市| 敖汉旗| 勐海县| 沂南县| 舒兰市| 皋兰县| 榕江县| 灵璧县| 尖扎县| 凤凰县| 北辰区| 遂溪县| 江华| 乐山市| 漾濞| 金乡县| 太和县| 天全县| 五台县| 仁寿县| 隆尧县| 泰宁县| 东乡| 云安县| 柳州市| 宁海县| 城口县| 陈巴尔虎旗| 彭山县| 茶陵县| 玉田县| 亳州市|