0

Java コード:

// Create a second thread.
class NewThread implements Runnable 
{
    Thread t;
    NewThread() 
    {   
        t = new Thread(this, "Demo Thread");    // Create a new, second thread
        System.out.println("Child thread: " + t);
        t.start();              // Start the thread
    }
    public void run()   // This is the entry point for the second thread.
    {
        justCall();
    }
    public synchronized void justCall()
    {
        try 
        {   
                for(int i = 10; i > 0; i--)
                {
                    System.out.println("Child Thread: " + i);
                    Thread.sleep(10000);
                }

        }
        catch (Exception e) 
        {
            System.out.println("Child interrupted.");
        }
        System.out.println("Exiting child thread.");
    }
}
class ThreadDemo 
{
    public static void main(String args[]) 
    {
        NewThread nt = new NewThread();         // create a new thread
        try 
        {
            for(int i = 5; i > 0; i--) 
            {
                System.out.println("Main Thread: " + i);
                Thread.sleep(1000);
            }
        }
        catch (InterruptedException e) 
        {
            System.out.println("Main thread interrupted.");
        }   
        System.out.println("Main thread exiting.");
    }
}

ここで、同期された justCall() メソッドを削除し、run() メソッドで同期ブロックを初期化できます (justCall() メソッドのコードを同期ブロックに入れます)。

ここで子コードを同期する方法は? 助けてください。Thread.sleep() メソッドが同期ブロックまたはメソッドで実行されている間、ロックを解放しないことを読みました。しかし、私のコードでは、メイン スレッドと子コードが同時に実行されます。Thread.sleep() メソッドを使用して子コードを同期するのを手伝ってください。

4

1 に答える 1