标签:Thread winner 基础 RacerRunnable step 线程 多线程 public
线程之间方法区和堆内存共享,栈内存不共享;哪个线程调用sleep()方法,哪个线程就进入睡眠状态,与哪个对象调用该方法无关.start()方法的作用是创建一个线程的栈内存,该方法与普通方法相同,执行完立刻销毁.
package test1;
public class RacerRunnable implements Runnable{
/**
* 龟兔赛跑多线程
*/
public String winner;
public void run() {
for(int step = 1; step <= 100; step++) {
if(Thread.currentThread().getName().equals("rabbit") && step % 10 == 0)
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(gameOver(step)==true) {
break;
}
System.out.println(Thread.currentThread().getName()+"-->"+step );
}
}
public boolean gameOver(int step) {
if(winner != null) {
return true;
}else if(step == 100) {
winner = Thread.currentThread().getName();
System.out.println("winner-->"+Thread.currentThread().getName());
return true;
}else {
return false;
}
}
public static void main(String[] args) {
RacerRunnable racer = new RacerRunnable();
new Thread(racer, "tortoise").start();
new Thread(racer, "rabbit").start();
try {
Thread.sleep(2000); //主线程调用sleep()方法,主线程进入睡眠状态.
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("主线程进入休眠状态!");
}
}
标签:Thread,winner,基础,RacerRunnable,step,线程,多线程,public 来源: https://blog.51cto.com/14472348/2486608
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。