达内广州C++学院|c++培训|广州达内科技C++/C#培训|.NET培训|IT培训|达内广州岗顶中心 达内广州C++学院|c++培训|广州达内科技C++/C#培训|.NET培训|IT培训|达内广州岗顶中心
java程序员
 当前位置:主页 > 高端课程 > java程序员 >

java????????????(2) --Synchronized???Volatile??????

时间:2019-04-03  来源:未知  作者:广州达内培训

1 Synchronized

?????????????????????synchronized???????????????????????????????????????synchronized???????????????????????????????????????????????????

  • ?????????????????????????????????????????????????????????
  • ?????????????????????????????????????????????class?????????
  • ??????????????????????????????synchronized???????????????????????????

????????????????????????????????????synchronized????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

1.1 ?????????????????????

??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????synchronized??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
????????????

    int i = 1;
    public synchronized void increment(){
        i++;
    }

??????????????????????????????????????????????????????i++?????????????????????????????????????????????????????????i++?????????????????????????????????????????????????????????????????????i++??????synchronized???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

???????????????????????????????????????i++????????????????????????????????????????????????????????????????????????????????????

1.2 ?????????????????????

?????????java????????????????????????????????????synchronized??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

???????????????????????????????????? ???????????????A????????????????????????????????????????????????????????????????????????????????????B?????????????????????????????????????????????
?????????B??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

2 Volatile

????????????????????????volatile???????????????????????????/?????????????????????volatile????????????java????????????????????????????????????????????????????????????????????????????????????????????????/???????????????????????????volatile???????????????????????????????????????????????????????????????

2.1 volatile?????????

??????????????????????????????

public class VolatileTest1 {
    volatile long a = 0L;                   //??????volatile??????64??????long?????????

    publ悠洋棋牌下载ic void set(long b) {           
        a = b;                              //??????volatile????????????
    }

    public void increment() {           
        a++;                                //??????????????????volatile????????????/???
    }

    public long get() {
        return a;                           //?????????volatile????????????
    }
}
public class VolatileTest2 {
    long a = 0L;                                //64????????????long?????????

    public synchronized void set(long b) {      //???????????????????????????????????????
        a = b;
    }

    public void increment() {                   //??????????????????
        long tmp = get();                       //???????????????????????????
        tmp += 1;                               //??????????????????
        set(tmp);                               //???????????????????????????
    }

    public synchronized long get() {            //???????????????????????????????????????
        return a;                       
    }
}

??????????????????????????????????????????????????????????????????

???????????????volatile?????????????????????????????????????????????????????????????????????Synchronized???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????volatile???????????????????????????

??????????????????????????????????????????????????????????????????????????????????????????????????? a++??????????????????????????????????????????volatile????????????????????????????????????

???????????????volatile?????????????????????????????????

  • ?????????????????????volatile?????????????????????????????????????????????????????????volatile????????????????????????
  • ???????????????????????????volat???????????? / ??????????????????????????????volatile++???????????????????????????????????????

    ???????????????????????????????????????????????????????????????double???long????????????????????????????????????
    double???long?????????64??????????????????32???????????????????????????????????????64??????long/double????????????
    ????????????????????????32????????????????????????????????????????????????64?????????????????????????????????????????????
    ???????????????volatile??????????????????64??????double???long?????????????????????????????????

2.2 volatile??????????????????

???????????????????????????????????????volatile??????????????????????????????????????????????????????????????????????????????????????????JDK1.5?????????????????????volatile??????????????????????????????

volatile??????????????????????????????????????????????????????????????????????????????????????????volatile???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

????????????????????????????????????????????????????????????????????????????????????????????????????????????Java???????????????????????????????????????????????????????????????JMM???????????????????????????

  • ?????????volatile??????????????????????????????StoreStore?????????
  • ?????????volatile??????????????????????????????StoreLoad?????????
  • ?????????volatile??????????????????????????????LoadLoad?????????
  • ?????????volatile??????????????????????????????LoadStore??????

???????????????

  1. volatile????????????????????????????????????????????????????????????????????????
  2. volatile????????????????????????????????????????????????volatile??????????????????
  3. ????????????volatile????????????????????????volatile???????????????????????????

2.3 volatile???????????????

  1. ????????????
    ???volatile?????????boolean ???????????????while?????????????????????????????????????????????????????????????????????????????????while????????????????????????
  2. ?????????????????????
    ????????????????????????????????????

    1??????????????????????????????
    2??????????????????
    3?????????????????????????????????????????????

    ??????????????????????????????????????????2???3?????????????????????????????????????????????????????? 1-3-2???
    ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

  3. ????????????
    ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? volatile ??????????????????????????????????????????????????????????????????????????????????????????????????????
  4. ?????????????????????????????????
    ?????????????????????????????? ++x ???????????????????????????????????????????????????????????????????????????????????????????????????????????? volatile ?????????????????????????????????????????????????????????????????????????????????volatile?????????????????? / ????????????????????????????????????????????????volatile???????????????????????????????????????????????????????????????synchronized????????????synchronized?????????????????????????????????

2.4 volatile??????

?????????synchronized??????????????????volatile???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????volatile????????????

volatile??????????????????????????????????????????volatile???????????????????????????????????????????????????????????????????????????volatilei??????????????????synchronized???????????????????????????????????????

3 synchronized???volatile?????????

1??? volatile???????????????????????????

volatile?????????????????????????????????????????????volatile????????????????????????????????????????????????????????????????????????????????????volatile??????????????????synchronized???????????????????????????????????????

2???volatile????????????????????????????????????????????????

???????????????????????????????????????volatile????????????????????????????????????????????????volatile???????????????????????????????????????

3???volatile??????synchronized?????????

??????????????????????????????volatile?????????????????????????????????????????????????????????????????????????????????????????????????????????volatile???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

4???volatile????????????????????????????????????????????????

???????????????????????????????????????????????????????????????????????????????????????volatile????????????????????????????????????????????????volatile?????????????????????????????????????????????????????????????????????volatile?????????????????????????????????????????????????????????????????????????????????count++?????????count = count+1??????




上一篇:基于JSP+Servlet开发高校社团管理系统(前台+后台) 大作业 毕业
下一篇:基于Spring和Mybatis拦截器实现数据库操作读写分离

友情链接: