永发信息网

JAVA线程问题解释

答案:1  悬赏:70  手机版
解决时间 2021-07-25 00:20

为Thread撰写两个子类,其中一个的run()在启动后取得第二个Thread object reference,然后调用wait()。另一个子类的run()在过了数秒之后调用notifyAll(),唤醒第一个线程,使第一个线程可以印出消息。

public class Itat2A_2
{
public static void main(String[] args)
{
A1 a1=new A1();
a1.start();
}
}
class A1 extends Thread
{
A1()
{
super();
}
public void run()
{
A2 a2=new A2();
a2.start();
try
{
synchronized (a2)
{ //同步的;
a2.wait();
}
System.out.println("me up");
}catch(Exception e)
{
e.printStackTrace();
}
}
}
class A2 extends Thread
{
A2()
{
super();
}
public void run()
{
try
{
A2.sleep(5000);
}catch(Exception e)
{
e.printStackTrace();
}
synchronized (this)
{
notifyAll();
}
}
}
//=======程序有了,我只想问一下,为什么要用 synchronized( ??){ } 这个呀,用到这里是什么意思呢?如果是为了同步,放到函数头上面就行了呀,但我放到函数头里,他会提示错说:a2不是自己的线程(大约是这个意思);

最佳答案

此方法只应由作为此对象监视器的所有者的线程来调用 API的原话


也就是说synchronized( ??){ } 中的??必需和调用wait的对象一致,否则抛出异常,你在函数头写相当于synchronized( this){ } this 是a1,不是a2

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
2010年4月4日结婚好不好?
可能是我在他眼里很小吧
世界时间21:30分是北京时间的几点
电脑开机显示无信号输入。
手机通话内容怎么查,怎么能查到手机通话内容&
快乐女声2009全国巡回演唱会 视频
绍兴市中巴车报废有何规定
想问一下陈冠希的《战争》里有好像有3个人唱
缔约过失的论文提纲
大学中庸是什么意思,形容中庸的词语
今天是星期日,我的左眼皮不停地跳,有什么含
怎么进入百度搜索
炫舞大黑翅膀配什么衣服好
完游戏怎样赚钱最快
命题是什么意思,研究生考试 自主命题 是什么
推荐资讯
河南郑州的鲤鱼价会不会上升?
妇幼保健院建卡多少钱,重庆妇幼保健院七星岗
有的手机为什么能打开QQ2007却打不开QQ2008
奥拓的底盘有好高?
传奇高手请速进:合击内255是不是真有4倍攻和
转【问】地下城与勇士什么可以
求个能下载超声波手机铃声的网站,谢谢了!
Fps 十分不稳定、忽高忽低、显卡是8600的、
DNF用来生产装备的材料怎么用?
腾讯游戏 内城灰白色的城墙在哪,最好有截图
什么是五维空间?
太原那里有三人篮球场?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?