zoukankan      html  css  js  c++  java
  • 按序打印_volatile 无法保证顺序

    package offer;
    
    import java.util.concurrent.locks.ReentrantLock;
    
    /**
     * @DATE: 2021-08-31
     * @TIME: 10:11
     * @FUNCTION: 按序打印abc   因为是abc 所以需要引入属性   v2 无锁
     */
    public class SortedPrintMore extends Thread{
        //由于是不同的Thread  n最好是共享
        //无锁化
        int i;
        static volatile int n;
        public SortedPrintMore(int n) {
            this.i = n;
        }
    
        @Override
        public void run() {
            while(true){
    
                if(n %3 == i){
                    //可以操作了
                    if(n>100) return;
                    System.out.println(Thread.currentThread().getName()+"在操作"+n++);
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    
        public static void main(String[] args) {
            SortedPrintMore more1 = new SortedPrintMore(0);
            SortedPrintMore more2 = new SortedPrintMore(1);
            SortedPrintMore more3 = new SortedPrintMore(2);
            more1.start();
            more2.start();
            more3.start();
        }
    }
    

    能保证每个组和组之间有序,但组内是无序的
    会出现:
    Thread-1在操作1
    Thread-2在操作2
    Thread-0在操作0

  • 相关阅读:
    PBN飞越转弯Flyover衔接DF航段保护区组图
    子群
    点集拓扑
    近世代数总结
    windows目标进程注入dll
    api文档方法参数
    windows制作动态链接库和使用二
    windows制作动态链接库和使用一
    拷贝构造函数
    c++内联函数
  • 原文地址:https://www.cnblogs.com/purexww/p/15209746.html
Copyright © 2011-2022 走看看