java - 关于java中setPriority()方法的问题
问题描述
我编写了一个程序来了解线程是如何工作的。该程序有一个包和三个类。 包和类
类的主体是:
public void print() {
Thread t = Thread.currentThread();
for(int i=0; i<5; i++) {
try {
System.out.println("Name : "+t.getName()+" Priority : "+
+t.getPriority()+" prints : "+i );
t.sleep(2000);
System.out.println(t.getName()+ " Priority : "+t.getPriority()+" ***************");
}
catch(Exception e) {}
}
}
}
package thread;
public class ThreadMethods extends Thread {
public void run() {
Code p = new Code();
p.print();
}
}
package thread;
public class Main {
public static void main(String[] args) {
ThreadMethods t1 = new ThreadMethods();
ThreadMethods t2 = new ThreadMethods();
ThreadMethods t3 = new ThreadMethods();
t1.setName("t1");
t2.setName("t2");
t3.setName("t3");
t1.setPriority(10);
t2.setPriority(5);
t3.setPriority(1);
System.out.println("for Thread t1 : "+" Id = "
+t1.getId()+" Name = "+t1.getName()+" Priority : "
+t1.getPriority());
System.out.println("for Thread t2 : "+" Id = "
+t2.getId()+" Name = "+t2.getName()+" Priority : "
+t2.getPriority());
System.out.println("for Thread t3 : "+ "Id = "
+t3.getId()+" Name = "+t3.getName()+" Priority : "
+t3.getPriority());
t1.start();
t2.start();
t3.start();
}
}
但它有一个意外的输出: output_1-1
正如您所观察到的,我为每个线程设置了一个优先级。但是它们的执行与它们的优先级无关。例如,我希望在线程休眠后,线程 t1 唤醒并打印星星。但是具有最低优先级的线程 t3 打印星星。为什么会这样?
解决方案
推荐阅读
- react-native - react-native-elements 叠加边框透明度
- reactjs - Reactjs 在变量准备好之前不会渲染
- jquery - 如何读取 HTML 元素的 data-original-title 的值
- google-sheets - 如果在某个日期之前,将返回查询中的日期替换为文本
- typescript - TypeScript - 输入“数字”| undefined' 不可分配给类型 'number'
- arrays - 如何根据 jsonb 列值对数据进行排序
- javascript - Vue.js 在组件中使用本地 javascript 文件函数:Uncaught TypeError: __WEBPACK_IMPORTED_MODULE_0__.writeSomething is not a function
- javascript - 在外部播放器中打开媒体文件
- bixby - 如何更改“搜索某事”文本?
- php - 如何使用数据表中选定项目的 id 作为按钮?