Java線程等待用法實(shí)例分析
本文實(shí)例講述了Java線程等待用法。分享給大家供大家參考,具體如下:
線程等待
public class Hello {
public static void main(String[] args) {
A a = new A();
new Thread(new MyRun(a)).start();
new Thread(new MyRun1(a)).start();
}
}
class MyRun implements Runnable {
private A a;
public MyRun(A a) {
this.a = a;
}
@Override
public void run() {
synchronized (a) {
a.setTitle("hello");
try {
a.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
a.setNumber(12);
System.out.println(a);
}
}
}
class MyRun1 implements Runnable {
private A a;
public MyRun1(A a) {
this.a = a;
}
@Override
public void run() {
synchronized (a) {
a.setTitle("world");
a.setNumber(24);
a.notifyAll();
System.out.println(a);
}
}
}
class A {
private String title;
private Integer number;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Integer getNumber() {
return number;
}
public void setNumber(Integer number) {
this.number = number;
}
@Override
public String toString() {
return "A{" +
"title='" + title + '\'' +
", number=" + number +
'}';
}
}
運(yùn)行輸出:
A{title='world', number=24}
A{title='world', number=12}
線程等待,obj.wait(),會(huì)釋放當(dāng)前的鎖,對(duì)象的普通方法,obj.wait(超時(shí)時(shí)間),表示指定時(shí)間后可以自動(dòng)喚醒
線程喚醒,obj.notify(),喚醒一個(gè)線程,obj.notifyAll(),喚醒所以線程,obj需要和線程等待的對(duì)象一致。
wait和sleep的區(qū)別
個(gè)人認(rèn)為:sleep就是一種延緩代碼執(zhí)行的方法,wait是有關(guān)多線程的一些高級(jí)操作。
更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java進(jìn)程與線程操作技巧總結(jié)》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章
mybatis執(zhí)行update批量更新時(shí)報(bào)錯(cuò)的解決方案
這篇文章主要介紹了mybatis執(zhí)行update批量更新時(shí)報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
SpringBoot ApplicationContextAware拓展接口使用詳解
當(dāng)一個(gè)類實(shí)現(xiàn)了這個(gè)接口(ApplicationContextAware)之后,這個(gè)類就可以方便獲得ApplicationContext中的所有bean。換句話說(shuō),就是這個(gè)類可以直接獲取spring配置文件中,所有有引用到的bean對(duì)象2023-04-04
java拼接字符串時(shí)去掉最后一個(gè)多余逗號(hào)的方法
這篇文章主要介紹了java拼接字符串時(shí)去掉最后一個(gè)多余逗號(hào)的方法,實(shí)例分析了java操作字符串的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03
SpringBoot中實(shí)現(xiàn)接收文件和對(duì)象
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)接收文件和對(duì)象,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
Struts2中Action中是否需要實(shí)現(xiàn)Execute方法
這篇文章主要介紹了Struts2中Action中是否需要實(shí)現(xiàn)Execute方法的相關(guān)資料,需要的朋友可以參考下2016-03-03
springboot CompletableFuture并行計(jì)算及使用方法
CompletableFuture基于 Future 和 CompletionStage 接口,利用線程池、回調(diào)函數(shù)、異常處理、組合操作等機(jī)制,提供了強(qiáng)大而靈活的異步編程功能,這篇文章主要介紹了springboot CompletableFuture并行計(jì)算及使用方法,需要的朋友可以參考下2024-05-05
Java日期時(shí)間處理問(wèn)題(從Date、Calendar到SimpleDateFormat)
這篇文章主要介紹了Java日期時(shí)間處理深度解析(從Date、Calendar到SimpleDateFormat),我們?cè)敿?xì)討論了Java中的日期和時(shí)間處理,包括Date、Calendar和SimpleDateFormat類的使用,以及Java?8引入的新的日期時(shí)間API的優(yōu)勢(shì),需要的朋友可以參考下2024-08-08

