关闭

数字加减多线程

标签: 线程多线程
71人阅读 评论(0) 收藏 举报
分类:
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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:40434次
    • 积分:3231
    • 等级:
    • 排名:第10543名
    • 原创:302篇
    • 转载:2篇
    • 译文:0篇
    • 评论:1条
    最新评论