Java中的wait()和sleep()方法之间的区别?
在 sleep()方法 是静态 的方法线程 类,它可以把当前正在运行的线程进入一个“非可运行”状态 ,而 wait()的方法是一个实例方法,我们使用线程对象的调用它,它只是影响对于那个对象。超时后的sleep()方法唤醒或调用 interrupt() 方法,而超时后的wait() 方法唤醒或调用notify()或notifyAll() 方法。的睡眠()方法不会释放任何锁定或monitoř在等待而等待()方法在等待时释放锁或监视器。
sleep()方法的 语法
public static void sleep(long millis) throws InterruptedException
wait()方法的语法
public final void wait() throws InterruptedException
示例
public class ThreadTest implements Runnable {
private int number = 10;
public void methodOne() throws Exception {
synchronized(this) {
number += 50;
System.out.println("Number in methodOne(): " + number);
}
}
public void methodTwo() throws Exception {
synchronized(this) {
Thread.sleep(2000); // calling sleep() method
this.wait(1000); // calling wait() method
number *= 75;
System.out.println("Number in methodTwo(): " + number);
}
}
public void run() {
try {
methodOne();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
ThreadTest threadTest = new ThreadTest();
Thread thread = new Thread(threadTest);
thread.start();
threadTest.methodTwo();
}
}输出结果
Number in methodOne(): 60 Number in methodTwo(): 4500