黑马程序员技术交流社区

标题: 视频学到了多线程那了,然后就迷糊了 [打印本页]

作者: 分解式    时间: 2014-2-12 13:11
标题: 视频学到了多线程那了,然后就迷糊了
多线程,关于这些线程运行程序抢资源上是怎么个分配资源的,怎么不明白呢
作者: wq10zj    时间: 2014-2-12 14:07

系统保证多线程是交替执行的,至于哪个线程先执行哪个线程后执行,则无法获得保证,我们称为随机
但是   它所说的随机是不能与产生随机数的随机相看待  我们知道电脑上是无法真正产生随机数
但是多线程它就是这样的机制

作者: 廉伟杰    时间: 2014-2-12 14:10
他是随机的,抢占cpu的利用,只是因为相隔时间太短而感觉同时进行似得
作者: 奋斗的小胖子    时间: 2014-2-12 14:19
电脑随机切换的吧。这些切换非常快的,跟电影一样,看电影的时候感觉很流程,一气呵成,其实都是各个画面剪辑而成的。
作者: 何苦似梦离    时间: 2014-2-12 15:06
其实有时候之是脑袋乱了,你理解了,但是你的脑袋认为你不理解,这个问题很简单,或许你需要休息一会了,让你的大脑清醒
作者: kira    时间: 2014-2-12 17:01
这个过程非常简单 因为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设置到最小也一样





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2