sleep () 和 wait () 有什么区别?

在Java中,sleep()wait() 是两个用于处理多线程的方法,它们具有不同的作用和用途。

  1. sleep() sleep()Thread 类的一个静态方法,用于暂停当前线程的执行一段指定的时间。它会阻塞当前线程,不会让其他线程获得执行机会,直到指定的时间过去。sleep() 可以用于引入时间延迟,但不涉及线程间的通信或协调。示例:
  try { 
	  Thread.sleep(1000); 
	  	// 暂停当前线程1秒钟 
	  } catch (InterruptedException e) { 
	 	 // 处理中断异常 
 }
  1. wait() wait()Object 类的方法,在多线程编程中用于实现线程之间的协调和通信。调用 wait() 方法会让当前线程进入等待状态,并释放对象的锁,直到其他线程调用相同对象的 notify()notifyAll() 方法唤醒等待的线程。通常与锁(synchronized)一起使用,用于避免竞态条件和实现线程间的协调。示例:
synchronized (sharedObject) {
            try {
                sharedObject.wait(); // 当前线程进入等待状态 
            } catch (InterruptedException e) { // 处理中断异常 
            }
        }
         

总结区别:

  • sleep()Thread 类的方法,用于暂停当前线程的执行一段时间,不涉及通信或协调,不释放锁。
  • wait()Object 类的方法,用于使当前线程等待并释放锁,直到其他线程唤醒,通常与锁一起使用,用于线程间的通信和协调。

你可能感兴趣的:(java)