最近看到多线程这一章节,有时遇到多线程交互执行,一个线程被另外一个线程抢占了cpu资源,那么这个线程被进去阻塞状态,再转入就绪状态。还是一直处于运行状态呢?求解答!
首先,,线程只要活着,,就三种状态,就绪,阻塞,运行
运行,,cpu同一时间只能运行一个线程,,所以不可能是运行
阻塞,,被强占资源会首先变为阻塞状态(如果了解操作系统的话,会有个阻塞队列的概念,排队等待进入运行状态)
就绪。。阻塞队列拍完了,会自动进入就绪状态(还有个就绪队列的概念,)
注意:这里说的队列,并非先进先出的队列,只是一种叫法,,,排序是由规则的(例如,短作业优先,优先级优先,先来先服务才和数据结构中的队列类似)
纯手码,,,对你有帮助,,请给个采纳。。。。。。。。。。。^.^
没玩过java,在操作系统中:只有任务获取IPC对象(获取信号量、互斥锁、邮箱、消息队列等未及时获得)、调用delay延时,才会进入阻塞态,所以该任务被抢占后仍然处于就绪态,且被挂进就绪任务链表,等待被调度。
阻塞状态啊,同一时间只能执行一个线程
时间片用完会进入就绪态,资源被占用会进入阻塞态。