java暫停stop代碼 java暫停程序的代碼

java中如何實(shí)現(xiàn)音樂(lè)暫停,找了好久只有開始和結(jié)束,沒(méi)有暫停和繼續(xù)

你如果使用Java

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名與空間、雅安服務(wù)器托管、營(yíng)銷軟件、網(wǎng)站建設(shè)、隆昌網(wǎng)站維護(hù)、網(wǎng)站推廣。

Media

Framework

2.1(也就是JMF2.1),其中的Player

player;player.stop();方法,就是有暫停功能,

當(dāng)執(zhí)行Player

player;player.stop();player.setMediaTime(new

Time(0));后,音樂(lè)就停止了,如果執(zhí)行Player

player;player.stop();,音樂(lè)就暫停,直到執(zhí)行player.start();,音樂(lè)繼續(xù).

因此,player.start();有開始播放和暫停后繼續(xù)播放的功能,player.stop();有暫停和停止(如果player.setMediaTime(new

Time(0));)的功能.

java中終止程序的執(zhí)行

方案操作如下:

(1)讓程序在一個(gè)單獨(dú)的線程中運(yùn)行,然后在終止時(shí),可以用線程的終止方法來(lái)結(jié)束它。

(2)退出Java程序時(shí)盡量不要使用java.lang.System的exit方法。Exit?方法可以終止JVM,從而終止程序,但如果同時(shí)運(yùn)行了另一個(gè)Java程序,使用exit方法就會(huì)讓該程序也關(guān)閉,這顯然不是希望看到的情況!!??!

要退出Java程序,可以使用destory()退出一個(gè)獨(dú)立運(yùn)行的過(guò)程。對(duì)于多線程程序,必須要關(guān)閉各個(gè)非守護(hù)線程。

只有在程序非正常退出時(shí),才使用exit方法退出程序

Java如何實(shí)現(xiàn)線程的暫停和重新啟用?求大神

JAVA中線程開始有start方法,暫停用sleep(time)方法,線程停止用stop方法,線程等待wait方法,java 中沒(méi)有線程重啟一說(shuō),只能說(shuō)線程喚醒notifyAll()或是notify方法,前一個(gè)notifyAll()方法是喚醒所有的已休眠或是等待狀態(tài)下的線程。具體的一種參數(shù)請(qǐng)參照J(rèn)DK文檔。

Java中的線程的生命周期大體可分為5種狀態(tài)。如下:

1.新建(NEW):新創(chuàng)建了一個(gè)線程對(duì)象。

2.可運(yùn)行(RUNNABLE):線程對(duì)象創(chuàng)建后,其他線程(比如main線程)調(diào)用了該對(duì)象的start()方法。該狀態(tài)的線程位于可運(yùn)行線程池中,等待被線程調(diào)度選中,獲取cpu 的使用權(quán) 。

3.運(yùn)行(RUNNING):可運(yùn)行狀態(tài)(runnable)的線程獲得了cpu 時(shí)間片(timeslice) ,執(zhí)行程序代碼。

4.阻塞(BLOCKED):阻塞狀態(tài)是指線程因?yàn)槟撤N原因放棄了cpu 使用權(quán),也即讓出了cpu timeslice,暫時(shí)停止運(yùn)行。直到線程進(jìn)入可運(yùn)行(runnable)狀態(tài),才有機(jī)會(huì)再次獲得cpu timeslice 轉(zhuǎn)到運(yùn)行(running)狀態(tài)。阻塞的情況分三種:

(一).等待阻塞:運(yùn)行(running)的線程執(zhí)行o.wait()方法,JVM會(huì)把該線程放入等待隊(duì)列(waitting queue)中。

(二).同步阻塞:運(yùn)行(running)的線程在獲取對(duì)象的同步鎖時(shí),若該同步鎖被別的線程占用,則JVM會(huì)把該線程放入鎖池(lock pool)中。

(三).其他阻塞:運(yùn)行(running)的線程執(zhí)行Thread.sleep(long ms)或t.join()方法,或者發(fā)出了I/O請(qǐng)求時(shí),JVM會(huì)把該線程置為阻塞狀態(tài)。當(dāng)sleep()狀態(tài)超時(shí)、join()等待線程終止或者超時(shí)、或者I/O處理完畢時(shí),線程重新轉(zhuǎn)入可運(yùn)行(runnable)狀態(tài)。

5.死亡(DEAD):線程run()、main() 方法執(zhí)行結(jié)束,或者因異常退出了run()方法,則該線程結(jié)束生命周期。死亡的線程不可再次復(fù)生。

java線程如何停止

終止線程的三種方法:

1. 使用退出標(biāo)志,使線程正常退出,也就是當(dāng)run方法完成后線程終止。?

2. 使用stop方法強(qiáng)行終止線程(這個(gè)方法不推薦使用,因?yàn)閟top和suspend、resume一樣,也可能發(fā)生不可預(yù)料的結(jié)果)。

3. 使用interrupt方法中斷線程。?

1. 使用退出標(biāo)志終止線程?

當(dāng)run方法執(zhí)行完后,線程就會(huì)退出。但有時(shí)run方法是永遠(yuǎn)不會(huì)結(jié)束的。如在服務(wù)端程序中使用線程進(jìn)行監(jiān)聽客戶端請(qǐng)求,或是其他的需要循環(huán)處理的任務(wù)。在這種情況下,一般是將這些任務(wù)放在一個(gè)循環(huán)中,如while循環(huán)。如果想讓循環(huán)永遠(yuǎn)運(yùn)行下去,可以使用while(true){……}來(lái)處理。但要想使while循環(huán)在某一特定條件下退出,最直接的方法就是設(shè)一個(gè)boolean類型的標(biāo)志,并通過(guò)設(shè)置這個(gè)標(biāo)志為true或false來(lái)控制while循環(huán)是否退出。下面給出了一個(gè)利用退出標(biāo)志終止線程的例子。?

package?chapter2;?

public?class?ThreadFlag?extends?Thread?

{?

public?volatile?boolean?exit?=?false;?

public?void?run()?

{?

while?(!exit);?

}?

public?static?void?main(String[]?args)?throws?Exception?

{?

ThreadFlag?thread?=?new?ThreadFlag();?

thread.start();?

sleep(5000);?//?主線程延遲5秒?

thread.exit?=?true;?//?終止線程thread?

thread.join();?

System.out.println("線程退出!");?

}?

}

在上面代碼中定義了一個(gè)退出標(biāo)志exit,當(dāng)exit為true時(shí),while循環(huán)退出,exit的默認(rèn)值為false.在定義exit時(shí),使用了一個(gè)Java關(guān)鍵字volatile,這個(gè)關(guān)鍵字的目的是使exit同步,也就是說(shuō)在同一時(shí)刻只能由一個(gè)線程來(lái)修改exit的值,?

2. 使用stop方法終止線程?

使用stop方法可以強(qiáng)行終止正在運(yùn)行或掛起的線程。我們可以使用如下的代碼來(lái)終止線程:?

thread.stop();?

雖然使用上面的代碼可以終止線程,但使用stop方法是很危險(xiǎn)的,就象突然關(guān)閉計(jì)算機(jī)電源,而不是按正常程序關(guān)機(jī)一樣,可能會(huì)產(chǎn)生不可預(yù)料的結(jié)果,因此,并不推薦使用stop方法來(lái)終止線程。?

3. 使用interrupt方法終止線程?

使用interrupt方法來(lái)終端線程可分為兩種情況:?

(1)線程處于阻塞狀態(tài),如使用了sleep方法。?

(2)使用while(!isInterrupted()){……}來(lái)判斷線程是否被中斷。?

在第一種情況下使用interrupt方法,sleep方法將拋出一個(gè)InterruptedException例外,而在第二種情況下線程將直接退出。下面的代碼演示了在第一種情況下使用interrupt方法。?

package?chapter2;?

public?class?ThreadInterrupt?extends?Thread?

{?

public?void?run()?

{?

try?

{?

sleep(50000);?//?延遲50秒?

}?

catch?(InterruptedException?e)?

{?

System.out.println(e.getMessage());?

}?

}?

public?static?void?main(String[]?args)?throws?Exception?

{?

Thread?thread?=?new?ThreadInterrupt();?

thread.start();?

System.out.println("在50秒之內(nèi)按任意鍵中斷線程!");?

System.in.read();?

thread.interrupt();?

thread.join();?

System.out.println("線程已經(jīng)退出!");?

}?

}

上面代碼的運(yùn)行結(jié)果如下:?

在50秒之內(nèi)按任意鍵中斷線程!?

sleep interrupted?

線程已經(jīng)退出!?

在調(diào)用interrupt方法后, sleep方法拋出異常,然后輸出錯(cuò)誤信息:sleep interrupted.?

注意:在Thread類中有兩個(gè)方法可以判斷線程是否通過(guò)interrupt方法被終止。一個(gè)是靜態(tài)的方法interrupted(),一個(gè)是非靜態(tài)的方法isInterrupted(),這兩個(gè)方法的區(qū)別是interrupted用來(lái)判斷當(dāng)前線是否被中斷,而isInterrupted可以用來(lái)判斷其他線程是否被中斷。因此,while (!isInterrupted())也可以換成while (!Thread.interrupted())。

當(dāng)前標(biāo)題:java暫停stop代碼 java暫停程序的代碼
標(biāo)題路徑:http://muchs.cn/article28/ddcchcp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、Google、、外貿(mào)建站軟件開發(fā)、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化