notify
好象不能指定特定的啊
好象不能指定特定的啊
解决方案 »
- 急!request.getParameter(String name)如何获取long的数据
- Queue<String>添加Integer对象居然不报错,可能吗?
- int a=02; // 编译正确 int a=09; // 编译错误?????????????????????????????
- 困扰了一个下午,还是没解决的JDK问题
- 怎样将一个Scoket的流通过ServerScoket转发给另一个Socket,,
- String类型如何转换成为double类型
- 关于时间的一个奇怪问题.望高手解惑.
- 请问有没有把数据集转成XML的工具?
- java ChatAdminServlet.java 出现以下信息,什么原因?
- 迷惑:是学java好还是vc++,c#好?(欢迎大家涌要发言)
- Eclipse插件
- 关于protected的问题?
{
Object obj; public ThreadA(Object o)
{
obj=o;
} public void run()
{
try
{
synchronized(obj)
{
obj.wait();
}
System.out.println("Working...");
}
catch(Exception e)
{
System.out.println(e);
}
}
}class Foo
{
public sattic void main(String[] args)
{
String s("1234");
ThreadA thread=new ThreasA(s);
thread.start();
s.notifyAll();
}
}
notifyAll唤醒全部,
在线程里再判断是不是应该唤醒的线程!
2、楼上的思路不知道实现过没有?问题是如何知道目的ID。
3、如果学习线程就不要从哲学家就餐入手,教学经典是生产者-消费者线程。哲学家就餐是算法问题。
例如,
public void run()
{
while (!waitFlag) { wait(); } ....
} public void setSleet(){ waitFlag=true; } public void setWake() { waitFlag = false; }你应该知道自己想要唤醒哪个线程啊!!掉那个线程的 setWake 方法吧!! 还有问题的话,再找我!!^_^
书上的伪代码中有一个临界区的概念。
如果不能进入临界区,线程也要阻塞。
这时如何区分唤醒信号到底是给谁的呢?如果唤醒错了线程(确实会出错),就造成了死锁。
现在用了一个折中的办法:就是设定了线程阻塞的时间,每隔一定时间强制唤醒,检查是否需要继续阻塞。
但总觉得不是很完美。
唤醒的线程是随机的呀!