package encode;
public class TestFourThread {
private int j=0;//实现runable接口的线程可以共享变量,实现Runnable接口能够多个线程共享资源
private synchronized void add(){//对最底层方法进行同步,也可以对其内部进行同步
try {
j++;
System.out.println("线程正在对j加1---------------j的值="+j);
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private synchronized void min(){
try {
j--;
System.out.println("线程正在对j减1---------------j的值="+j);
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
class ThreadAdd implements Runnable{
@Override
public void run() {
add();
}
}
class ThreadDec implements Runnable{
@Override
public void run() {
min();
}
}
public static void main(String[] args) throws InterruptedException {
TestFourThread t = new TestFourThread();
ThreadAdd add1= t.new ThreadAdd();
ThreadDec des1 = t.new ThreadDec();
for(int i = 0;i<2;i++){
Thread addThread = new Thread(add1);
addThread.start();
synchronized (addThread) {
try {
System.out.println("Waiting for addThread to complete...");
addThread.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Thread descThread = new Thread(des1);
descThread.start();
synchronized (descThread) {
System.out.println("Waiting for descThread to complete...");
descThread.notify();
}
}
}
}