首页 > 编程知识 正文

线程sleep和wait,java this用法

时间:2023-05-05 03:13:14 阅读:146048 作者:3256

sleep源代码如下:

publicclassthreadimplementsrunnable {

publicstaticnativevoidsleep (long millis ) throws InterruptedException;

publicstaticvoidsleep (long millis,int nanos ) throws InterruptedException {

if(Millis0) {

thrownewillegalargumentexception (timeoutvalueisnegative );

}

if(Nanos0|||Nanos999999 ) {

thrownewillegalargumentexception (nanosecondtimeoutvalueoutofrange );

}

if(Nanos=500000|() Nanos!=0 millis==0) }{

米里斯;

}

sleep(Millis );

}

//.

}

wait源代码如下:

公共类对象{

publicfinalnativevoidwait (长时间输出) throws InterruptedException;

publicfinalvoidwait (长时间外出,int nanos ) throws InterruptedException { )。

if (时间输出0 ) {

thrownewillegalargumentexception (timeoutvalueisnegative );

}

if(Nanos0|||Nanos999999 ) {

thrownewillegalargumentexception (nanosecondtimeoutvalueoutofrange );

}

if(Nanos0) {

时间输出;

}

等待(时间输出;

}

//.

}

1、sleep来自Thread类,wait来自Object类。

2、主要是sleep方法没有解锁,而wait方法解除锁定,使其他线程可以使用同步控制块或方法。

3、等待、通知和通知全部只能在同步控制方法或同步控制块中使用,但sleep可以在任何地方使用(

4、sleep必须捕获异常,而wait、notify和notifyAll不需要捕获异常

) sleep方法是Thread类的方法,表示线程处于休眠状态,等待一段时间后自动醒来变为可用

执行状态不会立即变为执行状态。 一个线程对象调用了sleep,因为线程调度机制恢复线程的运行也需要时间

方法之后,并不释放他拥有的所有对象锁,因此也不影响其他进程对象的执行。 但是在sleep的过程中

过程中,其他对象可能会调用其interrupt (),从而导致InterruptedException异常。 如果你的程序没有抓住这个区别

通常,线程异常终止,处于TERMINATED状态。 当程序捕捉到此异常时,程序将继续运行catch语

语句块(可能还有finally语句块)和后续代码。

sleep ) )请注意,方法是静态方法。 也就是说,他只对当前对象有效,t.sleep ) )将t对象放入sleep中,从而

的做法是错误的,当前线程只是sleep,而不是t线程

)2) wait是Object的成员方法,一个对象调用wait方法时,必须采用notify ) )和notifyAll ) )方法

启动此进程; 线程具有某个对象或特定对象的同步锁(wait ) )时,该线程将释放其所有内容

同步资源,而不仅限于调用此wait ()方法的对象。 wait ) )方法也可能在wait过程中成为其他对

通过调用interrupt ()方法生成。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。