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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 章成 黑马帝   /  2011-7-15 17:36  /  5803 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

自己对多个线程cup分配时间片不是很清楚?
会不会出现这种情况,有1,2,3,4四个线程,cup先把时间片随机的给1,当1执行到一半时,cup突然又把时间片给2,3,4中某一个,直到1再次抢到时间片时才接着执行上次未执行完的语句。书上,视频中好像都没讲到时间片的问题,谁知道具体点的时间片分配的知识?

评分

参与人数 1技术分 +1 收起 理由
admin + 1 这问题对应用开发人员来说有点难呢

查看全部评分

5 个回复

倒序浏览
黑马网友  发表于 2011-7-15 19:44:05
沙发
恩 是这样的 如果1线程在cpu时间片结束之前还没有完成,则会终止1线程,并把1放到执行队列的末尾,在2,3,4分别执行完他们的时间片后,1才会抢到时间片并继续执行。这个是组成原理学的知识。

评分

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

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-15 20:28:08
藤椅
这是计算机组成原理的问题,我记得当时老师讲的时候说,如果线程1进来了执行,如果2也进来了,考虑到优先级的问题,就要先去执行优先级高的,然后中途又有线程进来了同理运行

评分

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

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-15 20:40:17
板凳

语句执行一半

楼上两位说的应该对的,是会切换来切换去的,但是我想楼主的意思应该是当语句执行到一半,比如当1线程中执行Person p = new Person();还没技术的时候会不会切换到其他线程。不明白,所以上网查了查看有没有类似的说明,一时间没找到。于是就想,在这种时候应该是不会切换的,因为线程中本身也有sleep()、run()方法,他们都是在上一条语句结束的时候运行的。所以,应该不会切换的。

评分

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

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-18 12:24:33
报纸
如果在同一时刻有多个线程处于可运行状态,则他们需排队等待cpu资源,此时每个线程自动获得一个线程的优先级,优先级的高低则反映线程的重要或紧急程度。可运行状态按优先级进行排队,线程调度依据优先级基础上的“先到先服务原则”进行线程调度。优先级从线程的优先级的取值范围是1~10升高,当选中某个线程时该线程获得cpu资源进入执行状态,线程调度占先式调度如果在此线程执行中有一个更高优先级的线程进入可运行状态,则这个线程立即被调度执行。优先级越高线程调度就会给它越多的cpu执行时间。但注意:在多个线程在等待时,并不是优先级越高就越早执行而是获得的机会更多一些。

评分

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

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-18 13:28:34
地板
这是属于计算机操作系统的知识。时间片就是CPU分配给各个程序的时间,每个进程被分配一个时间段,称作它的时间片,在该进程允许运行的时间内,使各个程序从表面上看是同时进行的。如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。而不会造成CPU资源浪费。调度程序所要做的就是维护一张就绪进程列表,当进程用完它的时间片后,它被移到队列的末尾。

评分

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

查看全部评分

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