JAVA多线程学习3--线程一些方法
一、通過sleep方法睡眠
在指定的毫秒數(shù)內(nèi)讓當(dāng)前正在執(zhí)行的線程休眠(暫停執(zhí)行)。該線程不丟失任何監(jiān)視器的所屬權(quán)。
二、線程優(yōu)先級
線程具有優(yōu)先級,范圍為1-10。
MAX_PRIORITY線程可以具有的最高優(yōu)先級。int類型,值為10.
MIN_PRIORITY線程可以具有的最低優(yōu)先級。int類型,值為1.
NORM_PRIORITY分配給線程的默認(rèn)優(yōu)先級。int類型,值為5.
可以通過setPriority()設(shè)置線程的優(yōu)先級。
三、yield方法讓出cpu
yield方法線程高風(fēng)亮節(jié)讓出CPU一次。
四、停止線程的方法
stop()方法已經(jīng)被棄用,原因是不太安全。API文檔中給出了具體的詳細(xì)解釋。
通過interrupted()方法打斷線程。不推薦。
通過共享變量結(jié)束run()方法,進(jìn)而停止線程。如實(shí)例
public class ThreadInterrupt {public static void main(String []args){Runner run = new Runner();run.start();try {Thread.sleep(10000);} catch (InterruptedException e) {// TODO Auto-generated catch block }//run.stop();//已經(jīng)廢棄的方法,不建議使用,過于粗暴//run.interrupt(); //拋出異常,但是在異常處理中寫業(yè)務(wù)顯然不合適,不建議使用run.flag=false;//建議使用的停止線程的方法 } }class Runner extends Thread{boolean flag = true;public void run(){/* while(true){System.out.println(new Date()+"----");try {sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blockSystem.out.println("Interrupted");return;}}*/while(flag){System.out.println(new Date()+"----");try {sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blockSystem.out.println("Interrupted");return;}}} }五、Thread的sleep()方法與Object類的wait()方法比較
sleep()方法使線程休眠一定時間,休眠期間線程依然擁有之前獲得的鎖。而wait()方法使線程處于等待,等待期間線程不再擁有之前獲得的鎖。當(dāng)其他進(jìn)程通過notify喚醒進(jìn)程后,線程重新去搶資源的鎖。wait()方法一般與notify()或notifyAll()方法一起出現(xiàn)。
轉(zhuǎn)載于:https://www.cnblogs.com/vettel/p/3436373.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的JAVA多线程学习3--线程一些方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《吴兴黄浦亭庾中郎别诗》第十六句是什么
- 下一篇: 远程工作时的协作工具