注:文章内容来源于网络,真实性有待确认,请自行甄别。
java线程问题?classa{inta=1;synchroni
发表于:2024-10-24 00:00:00浏览:8次
问题描述:class a
{
int a=1;
synchroniz void A()
{
Thread th= rrentThread();
while(a!=0)
{
try{
intln("wait"+"::"+ tName());
a=0;
this.wait();
}catch(Exception e){}
}
intln("notify"+"::"+ tName());
tclass a
{
int a=1;
synchroniz void A()
{
Thread th= rrentThread();
while(a!=0)
{
try{
intln("wait"+"::"+ tName());
a=0;
this.wait();
}catch(Exception e){}
}
intln("notify"+"::"+ tName());
tify();
}
}
class B implements Runnable
{
a t=new a();
public void run()
{
t.A();
}
}
class d
{
public static void main(String args[])
{
B b=new B();
Thread t=new Thread(b);
tName("t");
Thread t2=new Thread(b);
tName("t2");
art();
art();
}
}
这个程序t最后为什么自己有执行了一次notify。
你理解错了,不是又执行了一次 rify,这个结果是随机的,运行若干次,结果并不一样,是因为你两个线程操作了同一个对象,当其中一个线程wait的时候,另一个线程获得运行机会,就会执行notify,虽然你的Thread对象是两个,但是B对象是同一个,也就是说a对象也是同一个。这是可以理解的,下面是我执行你的程序出现的几个结果:
//1111111111111 t2线程先获得运行的结果
----------Run Java App ----------
wait::t2
notify::t
notify::t2
输出完成 (耗时 0 秒) - 正常终止
// 2222 t线程先获得运行的结果
----------Run Java App ----------
wait::t
notify::t2
notify::t
猜你喜欢
- 请指教:关于JAVA的学习本人刚初学JAVA,请大家提供点好的学
- 本人刚初学J,请大家提供点好的学习资料,以及学习中需注意的内容,请高手们多多指教!~~~ 还有本人English不怎么好,对学习JAVA有影响吗?!~~ 先谢谢大家了!~~~
- JAVA编程软件问题。我是一个初学者,现在学习JAVA是运用nt
- 我是一个初学者,现在学习J是运用ntoepad和JDK环境,觉得不太方便,但JBuider不太会用,希望高手推荐一款有操作平台的JAVA编程软件,谢谢!
栏目分类全部>
推荐文章
- 有关java程序员的事在西安有什么公司都招,待遇怎么样.薪水怎么
- 我下载了sdk它是bin文件,怎么打开、安装?谢谢
- 如何看懂java源代码我找了一个开发源码项目cobra,我用ec
- 请指教:关于JAVA的学习本人刚初学JAVA,请大家提供点好的学
- JAVA编程语言有几种啊?这几种哪种是时下的主流?最好的是哪种?
- JAVA编程软件问题。我是一个初学者,现在学习JAVA是运用nt
- JAVA学习中的问题x++和++x这两个运算符到底是怎么运算的?
- 编写jsp网页最好用什么软件现在想学习jsp编写一个基于WEB的
- 小型超市管理系统用java写的代码!急!!!
- jsp网页用户注册时的数据验证制作jsp网页的注册页,想检验用户