62,620
社区成员
发帖
与我相关
我的任务
分享
public class TerminateThread implements Runnable{
//加入标识,标记程序是否执行
private boolean flag = true;
private String name;
public TerminateThread(String name) {
this.name = name;
}
@Override
public void run() {
int i=0;
//利用标识标记线程是否执行
while (flag) {
System.out.println(name + " 正在场上打球 "+i++);
}
}
//改变标识,线程执行结束
public void terminate(){
this.flag=false;
}
public static void main(String[] args){
//新建比赛进程
TerminateThread terminateThread =new TerminateThread("Kobe");
new Thread(terminateThread).start();
//main线程相当于整场比赛,i为比赛时间
for (int i=0;i<100;i++){
//当比赛进行到第80min,科比下场休息
if (i==80){
terminateThread.terminate();//线程终止
System.out.println("Kobe 下场休息");
}
System.out.println("比赛进行到第 "+i+" 分钟");
}
}
}


public class TerminateThread implements Runnable {
//加入标识,标记程序是否执行
private boolean flag = true;
private String name;
public TerminateThread(String name) {
this.name = name;
}
public static void main(String[] args) {
//新建比赛进程
TerminateThread terminateThread = new TerminateThread("Kobe");
new Thread(terminateThread).start();
//main线程相当于整场比赛,i为比赛时间
for (int i = 0; i < 30; i++) {
//当比赛进行到第80min,科比下场休息
if (i == 15) {
//???在终止线程时,如果线程处于就绪状态会怎么样???
terminateThread.terminate();//线程终止
System.out.println("Kobe 下场休息");
}
System.out.println("比赛进行到第 " + i + " 分钟");
}
}
@Override
public void run() {
int i = 0;
//利用标识标记线程是否执行
while (flag) {
printInfo(i++);
}
}
public synchronized void printInfo(int i) {
if (flag){
System.out.println(name + " 正在场上打球 当前flag为 " + flag + " ,这是第 " + i);
}
}
//改变标识,线程执行结束
public synchronized void terminate() {
this.flag = false;
}
}
