Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaのwait()メソッドとsleep()メソッドの違いは?


sleep()メソッド 静的です スレッドの方法 クラスであり、現在実行中のスレッドを「実行不可」状態に送信できます 一方、 wait() メソッドはインスタンスメソッドであり、スレッドオブジェクトを使用して呼び出しており、そのオブジェクトに対してのみ影響を受けます。 sleep() 時間切れ後のメソッドウェイクアップまたはinterrupt()の呼び出し メソッド、 wait() 時間切れ後のメソッドウェイクアップまたはnotify()の呼び出し またはnotifyAll() 方法。 sleep() メソッドはロックまたはモニートを解放しません r待機中、 wait() メソッドは、待機中にロックまたはモニターを解放します。

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

  1. Javaのpaint()メソッドとrepaint()メソッドの違いは何ですか?

    Paint()とRepaint() paint(): このメソッドは、このコンポーネントをペイントするための命令を保持します。 Java Swingでは、paintが paintBorder()を呼び出すときに、paint()メソッドの代わりにpaintComponent()メソッドを変更できます。 paintComponent() およびpaintChildren() メソッド。このメソッドを直接呼び出すことはできません。代わりに、 repaint()を呼び出すことができます。 。 repaint() :このメソッドはオーバーライドできません。 paint()を制御します サイ

  2. JavaのprintStackTrace()メソッドとgetMessage()メソッドの違いは何ですか?

    例外の詳細を見つける方法は2つあります。1つはprintStackTrace()メソッドで、もう1つはgetMessage()メソッドです。 printStackTrace()メソッド これはjava.lang.Throwableクラスで定義されているメソッドであり、java.lang.Errorクラスとjava.lang.Exceptionクラスに継承されます。 このメソッドは、例外の名前、メッセージの性質、および例外が発生した行番号を表示します。 例 public class PrintStackTraceMethod {    public static voi