当前位置: 首页 > 知识库问答 >
问题:

如果只有一个线程在运行(主线程)并且调用了sleep(1000 ),那么这个线程会Hibernate1秒钟还是至少1秒钟?

房育
2023-03-14

在下面的代码中:

 class Test {
      public static void main(String [] args) {
           printAll(args);
      }
      public static void printAll(String[] lines) {
           for(int i=0;i<lines.length;i++){
                System.out.println(lines[i]);
                Thread.currentThread().sleep(1000);
           }
      }
 }

数组行中的每个字符串都会输出:

  1. 行间正好有1秒钟的停顿?
  2. 行间至少有1秒的停顿?

共有3个答案

狄珂
2023-03-14

调用 Thread.sleep(1000) 方法,将当前正在执行的线程置于等待状态指定时间。根据你的程序,它似乎只有一个单线程程序,因此,当调用线程处于等待状态时,没有其他线程处于运行状态,所以在1000毫秒之后,你的线程将有机会在1000毫秒后执行,但对于其他应用程序来说,没有线程将执行。

方和宜
2023-03-14

因此,据它所知,它将只睡1秒钟。线程。睡眠方法并不完美。请参阅此问题和其他相关问题:

https://stackoverflow.com/a/18737109/4615177

冯阳云
2023-03-14

大约1秒的暂停。线程可以提前被唤醒,你会得到一个InterruptedException,或者线程可以Hibernate1000毫秒,然后不能立即运行,所以它将是1000毫秒微秒(或者更多,如果有更高优先级的线程占用CPU)。

你也说错了。它是Thread.sleep(1000);,作为一个静态方法,它总是作用于当前线程,你不能让其他线程与它一起睡眠。

 类似资料:
  • 在Flink中,像“平面地图”、“地图”等运算符称为任务,如果我将平面地图的并行度设置为30,那么这个任务有30个子任务。 现在,如果我只有一个插槽,它会在一个插槽中产生多个线程吗?还是每个插槽只有一个线程? Flink会在该插槽中简单地创建30个线程,还是使用类似线程池的东西? 以上不是一个恰当的例子。 假设在作业中我有操作符flatMap和map,它们都有并行度1,我只有一个插槽,这个插槽会创

  • 我试着运行一个程序,使用线程显示带有数字的乘法、除法、加法和减法表。 但是我希望数字被乘以或相加等。由用户选择。 也就是说,程序应该在用户为每个操作选择一个数字后运行,然后显示结果。

  • 我有4条线。每个人每x秒打印给定的字母x次。任务是一次启动3个线程,在至少一个前一个线程完成时启动第四个线程。我不知道如何通知最后一个线程在适当的时间运行。

  • 我用的是Netty camel-Netty:jar:2 . 10 . 0 . red hat-60024。下面是我对Netty监听器的配置 荨麻:tcp://10.1.33.204:9001?textline=true 在这里,我看到基于调试日志,Netty只创建一个工作线程,所以传入的消息被阻塞,直到现有的消息被处理。 喜欢: 2014-08-23 12:36:48,394|DEBUG|w I/

  • 在一个android服务中,我创建了用于执行一些后台任务的线程。 我遇到一个情况,线程需要在主线程的消息队列上发布特定任务,例如。 有没有方法获取主线程的并从我的另一个线程向它发布/?

  • #include <stdio.h> #include <pthread.h> int a = 0; int b = 0; void *thread1_func(void *p_arg) { while (1) { a++; sleep(1); } } void *thread2_fu