java - 同时启动两个无限循环的线程

标签 java multithreading

假设我有以下代码片段:

Thread x = new Thread() {

        public void run() {

            while (true) {
                // do something
            }
        }

    };

    Thread y = new Thread() {

        public void run() {

            while (true) {
                // do something
            }
        }

    };

 x.start();
 y.start();

现在我的问题是,由于这两个线程都运行无限循环,它们会同时开始运行吗?

最佳答案

好吧,这取决于 JVM 线程调度程序、您正在运行代码的机器类型(单核或多核)和操作系统,当您第一次在新线程上调用 start() 方法时,它只会从新状态变为可运行状态。

作为 JVM 的一部分的线程调度器决定在任何给定时刻哪个线程应该运行,并将线程从运行状态中取出。任何处于可运行状态的线程都可以由调度器选择。

关于java - 同时启动两个无限循环的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36250580/

相关文章:

c++ - C++多线程数据同步

c++ - g++ __thread = 非平凡的构造函数

java - JSF/Hibernate NotBlank 验证

java - 如何更改 main 中 boolean 方法的值?

java - 从添加到项目的 jar 中读取动态 Web 项目中存在的属性文件

c - 在多个线程之间共享套接字描述符

c++ - thread_local 变量的实例是否保证由访问它们的线程初始化?

java - 使用ajax请求对象并处理它们

java - 如何循环遍历 Map 并克隆每个值?

c++ - 原子增加和比较线程安全吗