当我测试时,java thread.sleep()不使处理器时间可用于其他线程

当我测试时,java thread.sleep()不使处理器时间可用于其他线程,java,multithreading,thread-sleep,Java,Multithreading,Thread Sleep,当我使用Thread.sleep时,我发现当当前线程调用sleep方法时,其他线程无法获得调用自己线程的处理器时间。但是我从相反的方向得到睡眠方法的信息,所以我很困惑 这是我的密码: class ThreadTest { private Runnable mRunnable = () -> { println("from runnable start run"); println("from runnable start end"); };

当我使用Thread.sleep时,我发现当当前线程调用sleep方法时,其他线程无法获得调用自己线程的处理器时间。但是我从相反的方向得到睡眠方法的信息,所以我很困惑

这是我的密码:

class ThreadTest {

    private Runnable mRunnable = () -> {
        println("from runnable start run");
        println("from runnable start end");
    };

    private class TestThread extends Thread {
        @Override
        public void run() {
            super.run();
            println("from Thread start run");
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            println("from Thread end");
        }
    }


    private void println(String info) {
        System.out.println(getDate() + " : "+info);
    }

    private String getDate() {
        SimpleDateFormat sdf = new SimpleDateFormat();// 格式化时间
        sdf.applyPattern("yyyy-MM-dd HH:mm:ss a");// a为am/pm的标记
        Date date = new Date();// 获取当前时间
        return sdf.format(date);
    }

    void testThread() {
      TestThread thread=  new TestThread();
      thread.run();
        for (int i = 0; i < 10; i++) {
            new Thread(mRunnable).run();
        }
    }
}
希望有人能帮忙

thread.run;不启动线程。它只是在当前线程的上下文中执行run方法

您需要调用thread.start

同样,您需要调用new ThreadmRunnable.start;在单独的线程中运行runnable。

thread.run;不启动线程。它只是在当前线程的上下文中执行run方法

您需要调用thread.start


同样,您需要调用new ThreadmRunnable.start;在单独的线程中运行runnable。

omg,我没有意识到我调用run而不是start,thxomg,我没有意识到我调用run而不是start,thx