设计 4个线程,其中两个线程每次对 j 增加 1,另外两个线程对 j 每次减少 1。写出程序

来源:互联网 发布:linux系统怎么操作 编辑:程序博客网 时间:2024/06/02 01:51
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();            }          }    }          }

0 0