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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 分解式 中级黑马   /  2014-2-12 13:11  /  1009 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多线程,关于这些线程运行程序抢资源上是怎么个分配资源的,怎么不明白呢

5 个回复

倒序浏览

系统保证多线程是交替执行的,至于哪个线程先执行哪个线程后执行,则无法获得保证,我们称为随机
但是   它所说的随机是不能与产生随机数的随机相看待  我们知道电脑上是无法真正产生随机数
但是多线程它就是这样的机制
回复 使用道具 举报
他是随机的,抢占cpu的利用,只是因为相隔时间太短而感觉同时进行似得
回复 使用道具 举报
电脑随机切换的吧。这些切换非常快的,跟电影一样,看电影的时候感觉很流程,一气呵成,其实都是各个画面剪辑而成的。
回复 使用道具 举报
其实有时候之是脑袋乱了,你理解了,但是你的脑袋认为你不理解,这个问题很简单,或许你需要休息一会了,让你的大脑清醒
回复 使用道具 举报
这个过程非常简单 因为java中一般线程默认的优先级都是5
cpu在切换线程的过程中随机的坐着切换 但是我们可以设置优先级来改变这一特性
如下代码
  1. public class ThreadDemo {

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {
  6.                 // TODO Auto-generated method stub
  7.                 Thread aa = new Thread(new A());
  8.                 Thread bb = new Thread(new B());
  9.        
  10.                 aa.start();
  11.                 bb.setPriority(10);//设置B线程的优先级
  12.                 bb.start();
  13.          
  14.         }

  15. }
  16. class A implements Runnable {

  17.         @Override
  18.         public void run() {
  19.                 for(int x=0;x<200;x++){
  20.                 System.out.println(Thread.currentThread().getName()+"run");
  21.                        
  22.                 }
  23.                
  24.         }
  25.        
  26. }
  27. class B implements Runnable {

  28.         @Override
  29.         public void run() {
  30.                 for(int x=0;x<200;x++){
  31.                 System.out.println(Thread.currentThread().getName()+"run");
  32.                        
  33.                 }
  34.                
  35.         }
  36.        
  37. }
复制代码

这里的优先级传的是从0-10  10 最大 0最小 cpu执行到的频率也最低
我们设置b的为最大的时候 我们发现cpu就会优先选择执行完b的在执行A的 如果吧a设置到最小也一样

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马