本文详细介绍java中线程概念描述
六:wait(),notify(),notifyAll()
首先说明:wait(),notify(),
notifyAll()这些方法由java.lang.Object类提供,而上面讲到的方法都是由java.lang.Thread类提供(
Thread类实现了Runnable接口)。
wait(),notify(),
notifyAll()这三个方法用于协调多个线程对共享数据的存取,所以必须在synchronized语句块内使用这三个方法。先看下面了例子:
示例12:
publicclassThreadTestimplementsRunnable{
publicstaticintshareVar=0;
publicsynchronizedvoidrun(){
if(shareVar==0){
for(inti=0;i<10;i++){
shareVar++;
if(shareVar==5){
try{
this.wait();
}
catch(Exceptione){}
}
}
}
if(shareVar!=0){
System.out.print(Thread.currentThread().getName());
System.out.println("shareVar="+shareVar);
this.notify();
}
}
publicstaticvoidmain(String[]args){
Runnabler=newThreadTest();
Threadt1=newThread(r,"t1");
10
Threadt2=newThread(r,"t2");
t1.start();
t2.start();
}
}
运行结果:
t2shareVar=5
t1shareVar=10
t1线程最先执行。由于初始状态下shareVar为0,t1将使shareVar连续加1,当shareVar的值为5时,t1调用wait()方法,
t1将处于休息状态,同时释放锁标志。这时t2得到了锁标志开始执行,shareVar的值已经变为5,所以t2直接输出shareVar的值,
责编:豆豆技术应用
- Java新闻
- Java入门教程
- Java开发工具
- J2EE
- J2SE
- J2ME
- EJB/Spring
- Applet/Swing
- Servlet/JSP
- Struts/Hibernate
- JDBC/JDO
- Ajax
- 认证考试
- JAVA对象比较器Comparator
- Java 6 RowSet 使用完全剖析
- 深入了解"Java"中的“异常机制”
- 讨论5种跟踪Java执行的方法
- Java专业术语标准化规范
- java中线程概念描述
- JAVA中的反射机制详解
- Java语言灵巧指针与垃圾回收
- 讲述java语言中内部类的研究
- Java对于Cookie的操作详解