zoukankan      html  css  js  c++  java
  • Java语法细节

    synchronized关键字

    synchronized关键字锁住方法和this的不同之处:

    public synchronized void MyMethod() {
            /**
             * 1   注意,如果synchronized的是TestClass.class,那么任何new出来的该类的实例都会被阻塞,该方法对于该类的所有实例都是一个临界区
             * 2   如果synchronized的是this,那么只是针对于一个类的具体实例来说,并不是所有的
             * 3   如果在方法命名处,即:public synchronized void MyMethod(),那么等效于2
             */
            //synchronized (this) {
            try {
                Thread.sleep(10 * 1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            //}
        }
    

    关键字volatile

    ​ 注意,对于volatile,Java只保证访问该变量的时候,访问的是最新的(即直接访问的内存,而不是拷贝),但是并不保证原子性,但是其也有可能出现脏数据,因为如果使用value++或者value += 1的操作(这些操作均依赖于volatile变量的上一次的值,因为这些操作都不是原子操作),有可能会出现脏数据volatile的另外一个作用是禁止指令的重排序优化。在一般情况下,Java执行语句的顺序可能会因为自动优化而修改,详情见:该博客

  • 相关阅读:
    mybatis plus foreach 的用法
    mongodb聚合查询
    mongodb and 和 or 查询
    mongodb全文搜索
    时间参数的传递
    rabbitmq
    AOP各种的实现
    OWASP Top 10十大风险 – 10个最重大的Web应用风险与攻防
    OAuth2.0认证和授权机制讲解
    MySQL主从复制
  • 原文地址:https://www.cnblogs.com/seancheer/p/10708290.html
Copyright © 2011-2022 走看看