Jer*_*Lin 1 java multithreading thread-sleep
当我使用时Thread.sleep(),我发现当前线程调用sleep()方法时,其他线程无法获取处理器时间来调用自己的.但我反过来sleep()从Oracle的文档中获取方法的信息,所以我很困惑.
这是我的代码:
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
结果是
2018-11-09 18:15:20 PM : from Thread start run
2018-11-09 18:15:23 PM : from Thread end
2018-11-09 18:15:23 PM : from runnable start run
2018-11-09 18:15:23 PM : from runnable start end
2018-11-09 18:15:23 PM : from runnable start run
2018-11-09 18:15:23 PM : from runnable start end
2018-11-09 18:15:23 PM : from runnable start run
2018-11-09 18:15:23 PM : from runnable start end
2018-11-09 18:15:23 PM : from runnable start run
2018-11-09 18:15:23 PM : from runnable start end
2018-11-09 18:15:23 PM : from runnable start run
2018-11-09 18:15:23 PM : from runnable start end
2018-11-09 18:15:23 PM : from runnable start run
2018-11-09 18:15:23 PM : from runnable start end
2018-11-09 18:15:23 PM : from runnable start run
2018-11-09 18:15:23 PM : from runnable start end
2018-11-09 18:15:23 PM : from runnable start run
2018-11-09 18:15:23 PM : from runnable start end
2018-11-09 18:15:23 PM : from runnable start run
2018-11-09 18:15:23 PM : from runnable start end
2018-11-09 18:15:23 PM : from runnable start run
2018-11-09 18:15:23 PM : from runnable start end
Run Code Online (Sandbox Code Playgroud)
希望有人能提供帮助
thread.run();不会启动一个线程.它只是在当前线程的上下文中执行run方法.
你需要打电话 thread.start()
同样,你需要调用new Thread(mRunnable).start(); 在一个单独的线程中运行runnable.
| 归档时间: |
|
| 查看次数: |
45 次 |
| 最近记录: |