多线程安全开启问题

来源:互联网 发布:炉石传说mac下载 编辑:程序博客网 时间:2024/06/06 07:32
package programT8;public class DealNum {    private int i;//声明线程开始的初始值    public DealNum(int i) {        this.i = i;    }    //数字加1的方法:    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{        @Override        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();            }        }    }}
package programT8;import programT8.DealNum.Add;import programT8.DealNum.Sub;public class Test {    public static void main(String[] args) {        //实例化外部类        DealNum dm=new DealNum(100);        //实例化内部类        Add a=dm.new Add();        Sub s=dm.new Sub();        //创建两个加1线程,2个减一线程        for (int i = 0; i <2; i++) {            new Thread(a, "加线程:").start();        }        for (int i = 0; i <2; i++) {            new Thread(s, "减线程:").start();        }    }}
0 0
原创粉丝点击