package thread;
/*
* 多线程 加减
*/
public class Simple1 {
public static void main(String [] agre){
souces so=new souces() ;
new Thread(new ARunnable(so),"线程A").start();
new Thread(new SRunnable(so),"线程B").start();
new Thread(new ARunnable(so),"线程C").start();
new Thread(new SRunnable(so),"线程D").start();
}
}
class souces{
public int number=0;
//flag 为TRUE是做加法 FALSE是做减法
public boolean flag=true;
public synchronized void addNumber(){
if(flag){
number=number+1;
System.out.println("线程"+Thread.currentThread().getName()+"值为"+number);
flag=false;
}else{
try {
super.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
super.notify();
}
public synchronized void subNumber(){
if(flag){
try {
super.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
number=number-1;
System.out.println("线程"+Thread.currentThread().getName()+"值为"+number);
flag=true;
}
super.notify();
}
}
class ARunnable implements Runnable{
private souces A;
ARunnable(souces so){
this.A=so;
}
@Override
public void run() {
for(int i=0;i<50;i++){
A.addNumber();
}
}
}
class SRunnable implements Runnable{
private souces B;
SRunnable(souces so){
this.B=so;
}
@Override
public synchronized void run() {
for(int i=0;i<50;i++){
B.subNumber();
}
}
}
多线程的加减
最新推荐文章于 2021-03-22 21:17:23 发布