已有101人关注
wait方法执行后,为什么只有几次是和预期的结果一样?
发表在Java图书答疑 2010-12-30
是否精华
版块置顶:
//运行的结果可能和预期的结果不同
/*
 *t1进入了同步方法readString()
当前对象是ThreadWaitNotifyDemo@61de33
t1等待1秒
t2进入了同步方法readString()
当前对象是ThreadWaitNotifyDemo@61de33
t2等待1秒
t1休眠了2秒
t1输出字符串我一边抽烟,一边编程
t2休眠了2秒
t2输出字符串我一边抽烟,一边编程

 *
 */
/*
 * t1进入了同步方法readString()
当前对象是ThreadWaitNotifyDemo@61de33
t1等待1秒
t2进入了同步方法readString()
当前对象是ThreadWaitNotifyDemo@61de33
t2等待1秒
t2休眠了2秒
t2输出字符串我一边抽烟,一边编程
t1休眠了2秒
t1输出字符串我一边抽烟,一边编程
 */
public class ThreadWaitNotifyDemo implements Runnable{
private synchronized void readString(String content)
{
String name=Thread.currentThread().getName();
System.out.println(name+"进入了同步方法readString()");
System.out.println("当前对象是"+this);
try {
System.out.println(name+"等待1秒");
wait(1000);//让出锁一秒,相当于this.wait(1000);
Thread.sleep(1000*2);//休眠2秒,没有让出锁
System.out.println(name+"休眠了2秒");
} catch (Exception e) {
// TODO: handle exception
}
System.out.print(name+"输出字符串");
for(int i=0;i<content.length();i++)
{
System.out.print(content.charAt(i));
}
System.out.println();
}
public void run()
{
String string="我一边抽烟,一边编程";
readString(string);
}

public static void main(String args[])
{
Runnable runnable=new ThreadWaitNotifyDemo();
Thread t1=new Thread(runnable,"t1");
Thread t2=new Thread(runnable ,"t2");
t1.start();
t2.start();
}
}
分享到:
精彩评论 3
东北虎
学分:0 LV1
2010-12-30
沙发
请问这是哪本书的哪个实例?
filson
学分:0 LV1
TA的每日心情
签到
2022-06-29 13:15:30
2010-12-30
板凳
[FIELDSET][LEGEND]引自:1楼[/LEGEND]
请问这是哪本书的哪个实例?
[/FIELDSET]

回复:
  我看的是java开发实战宝典,例子是我自己写的。这里不懂,所以想问下
东北虎
学分:0 LV1
2010-12-30
地板
您好,现在工作任务较忙,所以主要回复图书中人问题,您的问题我们以后会给您回复。
首页上一页 1 下一页尾页 3 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照