设计四个线程,其中两个线程每次对变量i加1,另外两个线程每次对i减1.

说明:MyObj类为功能函数(加1和减1)以及变量i的存储地方。

这里采用AtomicInteger类来保证一致性

假设每个线程处理3次

public class Main {

    public static void main(String[] args){
        MyObj myObj = new MyObj();

        for(int i=0; i<2; i++){
            new Thread(new Runnable() {
                @Override
                public void run() {
                    for(int j=0; j<3; j++)
                        myObj.add();
                }
            }, "Thread" + i).start();

            new Thread(new Runnable() {
                @Override
                public void run() {
                    for(int j=0; j<3; j++)
                        myObj.dec();
                }
            }, "Thread" + i).start();
        }


    }

}

class MyObj{
    private static AtomicInteger num = new AtomicInteger(0);

    public void add(){
        num.getAndIncrement();
        System.out.println(Thread.currentThread().getName() + ": " + num);
    }

    public void dec(){
        num.getAndDecrement();
        System.out.println(Thread.currentThread().getName() + ": " + num);
    }
}

结果:

设计四个线程,其中两个线程每次对变量i加1,另外两个线程每次对i减1._第1张图片

你可能感兴趣的:(多线程编程)