5

私はスレッドの初心者です。スレッド オブジェクトがスリープ メソッドを呼び出した 3 種類の方法の違いが正確にはわかりません。また、スリープメソッドが呼び出された方法の使用に制限があるのはどのタイプのケースかを明確にしてください。

コードを以下に示します

    // implementing thread by extending THREAD class//

class Logic1 extends Thread
{
    public void run()
    {
        for(int i=0;i<10;i++)
        {
            Thread s = Thread.currentThread();
            System.out.println("Child :"+i);
            try{
                s.sleep(1000);              // these are the three types of way i called sleep method
                Thread.sleep(1000);         //      
                this.sleep(1000);           //
            } catch(Exception e){

            }
        }
    }
}

class ThreadDemo1 
{
    public static void main(String[] args)
    {
        Logic1 l1=new Logic1();
        l1.start();
    }
}
4

3 に答える 3

7

sleep()現在実行中のスレッドを常に参照する静的メソッドです。

javadoc から:

/**
 * Causes the currently executing thread to sleep (temporarily cease
 * execution) for the specified number of milliseconds, subject to
 * the precision and accuracy of system timers and schedulers. The thread
 * does not lose ownership of any monitors.
 *
 * @param  millis
 *         the length of time to sleep in milliseconds
 *
 * @throws  IllegalArgumentException
 *          if the value of {@code millis} is negative
 *
 * @throws  InterruptedException
 *          if any thread has interrupted the current thread. The
 *          <i>interrupted status</i> of the current thread is
 *          cleared when this exception is thrown.
 */
public static native void sleep(long millis) throws InterruptedException;

これらの呼び出し

s.sleep(1000); // even if s was a reference to another Thread
Thread.sleep(1000);      
this.sleep(1000);     

はすべて同等です

Thread.sleep(1000);  
于 2013-08-19T15:24:04.327 に答える
2

一般に、ClassName.methodが ClassName の静的メソッドで、xが型の式であるClassName場合は、 を使用でき、x.method()を呼び出すのと同じになりますClassName.method()。の値が何であるかは問題ではありませんx。値は破棄されます。であっても動作しxますnull

String s = null;
String t = s.format ("%08x", someInteger);  // works fine 
                                            // (String.format is a static method)
于 2013-08-19T15:55:29.483 に答える
1

3つとも同じです。これらは、現在実行中のスレッドを参照する別の方法です。

于 2013-08-19T15:25:41.997 に答える