public static void main(String[] args) {
/*
* 创建两个线程A和B,,,,
* 运行10次,,,
* 记录A线程的运行次数
*/
Runnable runnable = new Runnable(){
//用来记录线程A的运行次数
int i=0;
//用来控制运行次数
int f=0;
public void run() {
while(true){
synchronized (this) {
//第十次结束方法打印A运行次数
if(f==10){
System.out.println("完毕---A运行了"+i+"次");
return;
}
//等待0.5秒
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
//A线程运行则i+1
if(Thread.currentThread().getName().equals("A")){
i++;
System.out.println("A线程执行运行了,次数+1");
}
//B线程运行,则无动作
if(Thread.currentThread().getName().equals("B")){
System.out.println("B线程执行不做处理");
}
//控制次数
f++;
}
}
}
};
//开启线程A和B
new Thread(runnable,"A").start();
new Thread(runnable,"B").start();
}
运行结果:
A线程执行运行了,次数+1
A线程执行运行了,次数+1
B线程执行不做处理
A线程执行运行了,次数+1
A线程执行运行了,次数+1
A线程执行运行了,次数+1
A线程执行运行了,次数+1
A线程执行运行了,次数+1
B线程执行不做处理
B线程执行不做处理
完毕---A运行了7次
完毕---A运行了7次
提问:为什么结果是完毕运行了两次,,,怎么避免运行两次???
|
|