数字加减多线程

来源:互联网 发布:3亿个精准客户数据库 编辑:程序博客网 时间:2024/05/19 19:57
package copyfile;import copyfile.Numplus.Add;import copyfile.Numplus.Sub;/** * 设计4个线程,其中两个线程每次对j增加1, * 另外两个线程对j每次减少1。考虑到线程的安全性写出程序。 * @author Administrator * */public class Numtest {    public static void main(String[] args) {        Numplus n=new Numplus(100);//实例化外部类        //实例化内部类        Add add=n.new Add();        Sub sub=n.new Sub();        //创建两个加1线程,2个减一线程        for (int i = 0; i < 2; i++) {            new Thread(add,"加线程").start();        }        for (int i = 0; i < 2; i++) {            new Thread(sub,"减线程").start();        }    }}
package copyfile;public class Numplus {    private int i;    public Numplus(int i) {        this.i = i;    }    //数字加的方法:    public synchronized void add(){        i++;        System.out.println(Thread.currentThread().getName()+"+1后的结果为:"+i);    }    //数字减1的方法    public synchronized void sub(){        i--;        System.out.println(Thread.currentThread().getName()+"-1后的结果为:"+i);    }    //加1的内部类    class Add implements Runnable{        public void run() {            for (int i = 0; i <20; i++) {                add();            }        }    }    //减1的内部类    class Sub extends Thread{        @Override        public void run() {            for (int i = 0; i < 20; i++) {                sub();            }        }    }}
0 0
原创粉丝点击