java多线程问题(wait(time)) 无法,线程控制由jvm决定,程序员是没有办法确切地知道线程的运行情况的。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 做一个boolean的标记,在notify之前将标记置true。 JAVA里的线程有很大的不确定性,它个操作平台有很大关系! 这种情况的确不一定能够绝对的判断出来,但是一个折衷的方法是在synObject.wait(400);的catch InterruptedException语句中,判断System.currentTimeMillis() - starttime >= _maxWait如果是,则认为是超时,否则就是被唤醒 ChDw(米)对我也是这样作的(如果是notify的返回true,如果是时间到了返回false) private synchronized boolean P(long waittime) { if(--curSemaphore<0) { try { long curtime=System.currentTimeMillis(); wait(waittime); long delay=System.currentTimeMillis()-curtime; if(delay>=waittime) { if(curSemaphore<maxSemaphore) curSemaphore++; return false; } return true; } catch(InterruptedException e) { return false; } } return true; }可是不确定性会带来很大的问题 hq1305018(跃强)你在notify上设置标志位为true,在什么时候恢复这个标志位了(是在wait等待返回过后吗?) 修改数据 jAVA:怎么用用MBEAN抓WEBLOGIC的MEMORY使用量 javamail的问题 谢谢! Webservice client 用的jwsdp 1.1 小弟新手,哪位大哥可以给小弟提供一个免费又好用的开发软件!! 一条语句的退出 一个文件操作的顾虑 用java连接SQLServer出现非常奇怪的问题 ??有请:jackyz(J.),关于支付网关,谢谢谢谢 ?? 关于protected跨包访问的疑问---定义的正确解释? 如何用JMF实现语音聊天,分儿有的事 大家有没有碰到这种情况.(怪)
在synObject.wait(400);的catch InterruptedException语句中,判断
System.currentTimeMillis() - starttime >= _maxWait如果是,则认为是超时,否则就是
被唤醒
private synchronized boolean P(long waittime)
{
if(--curSemaphore<0)
{
try
{
long curtime=System.currentTimeMillis();
wait(waittime);
long delay=System.currentTimeMillis()-curtime;
if(delay>=waittime)
{
if(curSemaphore<maxSemaphore)
curSemaphore++;
return false;
}
return true;
}
catch(InterruptedException e)
{
return false;
}
}
return true;
}
可是不确定性会带来很大的问题
你在notify上设置标志位为true,在什么时候恢复这个标志位了(是在wait等待返回过后吗?)