wait后wait timeout怎么设置操作

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&wait to do 和wait doing怎么用_百度知道
wait to do 和wait doing怎么用
wait to do 等待着做某事wait doing是错误用法。wait用法简析:wait to do sth 等待做某事wait for sb&#47;sth 等待某人&#47;物wait for(one&#39;s) doing 等待做某事can&#39;t wait to do sth 迫不及待某做事例如:He is waiting to be called outside the interview room.——Who are you waiting for?——I am waiting for Jack and his friends.They were waiting for being called in..I can&#39;t wait to see you again.
其他类似问题
为您推荐:
提问者采纳
I can&#39。wait doing?亲;t wait to see what he comes up with nextwait to do 等着做,没有这种用法吧. 我迫不及待想看看他接下来会有什么新花样
英语学习顾问
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁java wait(long timeout, int nanos),后面的nanos有什么用?
今天看Object类代码的时候,发现wait(long timeout, int nanos)方法里面只是对两个参数做了下简单校验,然后调用wait(long timeout),问题是,看里面的代码,只要是nanos & 0,就使timeout+1然后调用wait(long timeout),代码如下:public final void wait(long timeout, int nanos) throws InterruptedException {
if (timeout & 0) {
throw new IllegalArgumentException("timeout value is negative");
if (nanos & 0 || nanos & 999999) {
throw new IllegalArgumentException(
"nanosecond timeout value out of range");
if (nanos & 0) {
timeout++;
wait(timeout);
}那请问nanos有什么用呢?或者说,nanos具体值有什么用?100和10000都没区别吧?
简单说,wait(long timeout, int nanos)方法提供比wait(long timeout)更好的时间控制1ms= ns ,其中wait的timeout都是ms单位This method is similar to the wait method of one argument, but it allows finer control over the amount of time to wait for a notification before giving up. The amount of real time, measured in nanoseconds, is given by: 1000000*timeout+nanos
你的代码是jdk?版本,我的jdk6 有段显示跟你不太一样: if (nanos &= 500000 || (nanos != 0 && timeout == 0)) {
timeout++; } wait(timeout);
已有帐号?
无法登录?
社交帐号登录<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&object.wait(long&timeout)方法需要慎用
object.wait(long timeout)方法需要慎用(zz)- -
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
这篇文章用代码讲解object.wait(long timeout)方法的使用.
还是关于wait()这个方面的话题,Object类除了提供wait()这个方法之外,还提供了另外一方法,那就是wait(long
javadoc上对这个方法的说明是:
Causes current thread to wait until either another thread invokes
the notify() method or the notifyAll() method for this object, or a
specified amount of time has elapsed.
于是我想测试一下如果没有另外的线程来调用notify()或者notifyAll(),
那么wait()方法真的可以在指定的时间内返回么?
试想一下,如果一个线程t1中对一个object.wait(1000), t1进入阻塞并且释放object的monitor,
线程t2获得了object的monitor,
如果t2握住object的monitor超过了1000毫秒,比如5000毫秒,那么t1的wait(1000)方法还可能在系统的时钟经过了1000毫秒之后正常返回吗?如果可以返回,t1必须要获得object的monitor,
而这个时候t2并没有释放object的monitor, 所以t1根本就不能够正常返回,下面的代码可以证实这一点。
public class WaitForSpecifiedTimeTest {
&private Object vitual = new Object();
&public void sleepFor(long mills)
& synchronized(vitual)
&& long now =
System.currentTimeMillis();
&& System.out.println("be going
to sleep");
vitual.wait(mills);
&& } catch (InterruptedException
e.printStackTrace();
&& System.out.println("I've slept
for "+(System.currentTimeMillis()-now)+" mills!");
&public void startAnotherThread()
& Thread t = new Thread(){
&& public void run()
&&&&&&&&&&&&
sleep(300);//睡一下的作用是确保让main线程先获得vitual的monitor.
} catch (InterruptedException e1) {
&&&&&&&&&&&&
e1.printStackTrace();
synchronized(vitual)
&&&&&&&&&&&&
long now = System.currentTimeMillis();
&&&&&&&&&&&&
System.out.println("I get the monitor");
&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&
Thread.sleep(5000);
&&&&&&&&&&&&&&&&&
//睡一下的目的是推迟5秒释放vitual的锁,5秒的时间已经超过了wait()的等待时间,这样可以看看程序有什么异常行为。
&&&&&&&&&&&&
} catch (InterruptedException e) {
&&&&&&&&&&&&&&&&&
e.printStackTrace();
&&&&&&&&&&&
&&&&&&&&&&&
System.out.println("I hold the monitor for
"+(System.currentTimeMillis()-now)+" mills");
& t.start();
&public static void main(String []args)
& WaitForSpecifiedTimeTest test = new
WaitForSpecifiedTimeTest();
& test.startAnotherThread();
& test.sleepFor(3000);
我的机器的运行结果是:
be going to sleep
I get the monitor
I hold the monitor for 4997 mills
I've slept for 5308 mills!
也就是说vitual.wait(3000), 它一直睡了5308毫秒才返回。
结论是:这个方法有比较大的潜在的危险,使用的时候一定要慎用,最好不要依赖它。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 fin wait1 怎么关 的文章

 

随机推荐