首页 > 解决方案 > java线程中的sleep方法,它具体暂停了什么?

问题描述

根据我目前掌握的信息,我了解到 Thread.sleep() 会暂停调用该方法的线程。例如,如果我在 main 方法中调用它,它会暂停 main 的执行。如果我在某个线程的运行中调用它,它只会暂停该线程。我需要专业知识来确认我的理解,因为我在网络上太多的信息中感到迷茫。我一直在练习应用这个,抛出以下内容:

一个线程类,Player1:

public class Player1 extends Thread{

public void run()
{
   
    try {
        System.out.println("I'm going to sleep");
        Thread.sleep(2000);
        System.out.println("I'm awake");
    } catch (InterruptedException ex) {
        
    }
 }
 }

一个线程类,客户端:

   public class Clients extends Thread {

    public void run()
    {   
     printer2(10);
    }

     public synchronized static void printer2(int val)
     {
  
        System.out.println(val);
        System.out.println(val);
        System.out.println(val);
        System.out.println(val);
        System.out.println(val);
        System.out.println(val);

        }
     }

它们在 main 方法中被调用:

    public static void main(String[] args) throws InterruptedException {
    Clients c1 = new Clients(10);
    Player1 p = new Player1();
     p.start();
    c1.start();
    }

会发生什么(根据我的理解):睡眠仅适用于 player1 线程的执行,而不适用于主线程或客户端线程。

同样,如果我在 Clients 线程的运行中添加一个 sleep 方法,它将独立于其他线程而休眠。例如:它自己休眠 1 秒,它也休眠 1 秒(即使这 2 1 秒重叠)

如果我错了请纠正我提前谢谢!

标签: javamultithreadingsleepthread-sleep

解决方案


推荐阅读