java 多线程 setPriority的坑

package thread;

import java.util.concurrent.atomic.AtomicInteger;

/**
 *设计4个线程、实现2个线程对i加一,2个线程对i进行减一
 * setPriority可以设置线程优先级 但是不是完全能保证一个进程总在一个进程之前
 */
public class Thread6Test {
    private static AtomicInteger atomicInteger=new AtomicInteger(0);
    private static AtomicInteger atomicIntegerSum=new AtomicInteger(0);
    private static class ThreadAdd extends Thread
    {
        @Override
        public void run() {
            atomicInteger.getAndIncrement();
            System.out.println(atomicInteger.get());
            atomicIntegerSum.getAndAdd(atomicInteger.get());
            System.out.println(atomicIntegerSum.get());
        }
    }

    private static class ThreadRed extends Thread
    {
        @Override
        public void run() {
            atomicInteger.getAndDecrement();
            System.out.println(atomicInteger.get());
            atomicIntegerSum.getAndAdd(atomicInteger.get());
            System.out.println(atomicIntegerSum.get());
        }
    }

    public static void main(String[] args)
    {
        for(int i = 0; i < 200; i++) {
            ThreadAdd thread1 = new ThreadAdd();
            thread1.start();
            thread1.setPriority(10);
            ThreadRed thread2 = new ThreadRed();
            thread2.start();
            thread1.setPriority(1);
        }
    }
}

 

posted @ 2019-09-12 14:36  wygflying  阅读(534)  评论(0编辑  收藏  举报