脏读

作者: 小爪哇海 | 来源:发表于2018-10-07 18:07 被阅读0次
      /**
     * @Description TODO
     * @Author "zhouhai"
     * @Date2018/10/717:56
     **/
    public class DirtyRead {
    
        private String username = "zhouhai";
        private String password = "123";
    
        public synchronized void setValue(String username, String password) {
            this.username = username;
    
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
    
            this.password = password;
    
            System.out.println("setValue最终结果:username = "+username+",password="+password);
        }
    
        public   void getValue() {
            System.out.println("getValue方法得到:username = "+this.username+",password="+this.password);
        }
    
    
        public static void main(String[] args) {
            final DirtyRead dr = new DirtyRead();
    
            Thread t1 = new Thread(new Runnable() {
                @Override
                public void run() {
                    dr.setValue("周海", "zhouhai");
                }
            });
    
            t1.start();
    
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
    
            dr.getValue();
    
        }
    
    }
    
    
    

    结果如下:

    getValue方法得到:username = 周海,password=123
    setValue最终结果:username = 周海,password=zhouhai

    可以在getvalue()方法上加同步锁,保持业务与数据的一致性!

    相关文章

      网友评论

        本文标题:脏读

        本文链接:https://www.haomeiwen.com/subject/eyolaftx.html