A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© L-℡ 高级黑马   /  2013-12-20 23:39  /  952 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我把t1的线程优先级设置到最高,为什么有时候刚启动运行t2会比t1先执行?
新手 求指教!顺便求技术分!嘿嘿!{:3_62:}
  1. public class ThreadTest4{
  2.         public static void main(String[] args) {
  3.                 Thread t1=new Thread(new runner5());
  4.                 Thread t2=new Thread(new runner6());
  5.                 t1.setPriority(Thread.MAX_PRIORITY);
  6.                 t1.start();
  7.                 t2.start();
  8.         }
  9. }

  10. class runner5 implements Runnable{
  11.         public void run() {
  12.                 for (int i = 1; i <= 100; i++) {
  13.                         System.out.println("t1:"+i);
  14.                 }
  15.         }
  16. }

  17. class runner6 implements Runnable{
  18.         public void run() {
  19.                 for (int i = 1; i <= 100; i++) {
  20.                         System.out.println("-----t2:"+i);
  21.                 }
  22.         }
  23. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 优先级,只是优先运行他,并不是不运行其他.

查看全部评分

2 个回复

倒序浏览
线程初始化的时候 都是五级,最高是十级。
不是说你把线程优先级设置到十级,他就一定会先执行,只是抢夺CPU执行权的几率大一些。
回复 使用道具 举报
正如楼上所说
为了验证你的权限问题,可以输出100次或者更多次,统计结果就能发现权限高的运行次数多。
刚启动t2比t1先运行,是因为线程不是按照代码的顺序执行的,这只是个概率事件。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马