首页 > 解决方案 > 在这个例子中,哪一个是当前线程?

问题描述

我不确定 Thread.sleep(1000) 指的是哪一个,因为两个线程都在运行以及主线程。

我试过在网上搜索答案,但似乎在任何地方都找不到任何东西。

public class Practice {

   public static void main(String args[]) {
      NewThread ob1 = new NewThread("One");
      NewThread ob2 = new NewThread("Two");
      ob1.t.start();
      ob2.t.start();
      try {
         Thread.sleep(1000);
      } catch(InterruptedException a) {
         System.out.println("Exception a caught");  
      }
   }
}

标签: javamultithreading

解决方案


Athread不能让其他任何人thread睡觉。Thread.sleep()将始终使当前thread睡眠。即使您调用ob1.t.sleep()了,您仍然会通过当前所在static sleep(long millis)的 a 实例调用该方法。Thread thread

我再说一遍,你不能让任何其他thread的睡眠thread

是的,当你说:

两个线程以及主线程都在运行。

但是该方法在哪个线程main中?是ob1.t还是ob2.t?不,它是 main thread,这意味着它将thread是正在睡觉的 main 。


推荐阅读