為什么運(yùn)行時(shí)前幾次那么亂呢,一會(huì)先生一會(huì)女士。不規(guī)律
package com.xuanxuan;
public class Actor extends Thread {
public void run() {
System.out.println(getName()+"是一個(gè)演員");
int count=0;
boolean keepRuning=true;
while(keepRuning) {
System.out.println(getName()+"登臺(tái)演出"+(++count));
if(count==100) {
keepRuning=false;
}
if(count%10==0) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
System.out.println(getName()+"演出結(jié)束了");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Thread actor=new Actor();
actor.setName("先生");
Thread actressThread=new Thread(new Actress(),"xiaoxiaoxiao女士");
actor.start();
actressThread.start();
}
}
class Actress implements Runnable{
public void run() {
System.out.println(Thread.currentThread().getName()+"是一個(gè)演員");
int count=0;
boolean keepRuning=true;
while(keepRuning) {
System.out.println(Thread.currentThread().getName()+"登臺(tái)演出"+(++count));
if(count==100) {
keepRuning=false;
}
if(count%10==0) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
System.out.println(Thread.currentThread().getName()+"演出結(jié)束了");
}
}
2020-05-13
學(xué)了操作系統(tǒng),你應(yīng)該知道一些進(jìn)程調(diào)度算法吧。先生在調(diào)用Thread.sleep(1000)后,表明 在接下來(lái)的 1000ms內(nèi) 先生不參與CPU的競(jìng)爭(zhēng),1000ms結(jié)束時(shí),cpu并不一定分配給先生,因?yàn)閣indows 的操作系統(tǒng)采用的是 搶占式進(jìn)程調(diào)度算法,進(jìn)程的優(yōu)先級(jí) 根據(jù)等待時(shí)間或其它因素 是動(dòng)態(tài)變化的,這時(shí)候可能會(huì)有 其它進(jìn)程的優(yōu)先級(jí)比“先生”高,因此先生只能等著。因?yàn)?先生 和 女士 的優(yōu)先級(jí)不停變化,所以可能會(huì)不規(guī)律的被調(diào)度。
2019-04-24
兩個(gè)線程爭(zhēng)奪cpu資源,可以參考https://blog.csdn.net/u014360189/article/details/45182277