谈谈对java的理解
admin
2023-01-31 04:21:47
0

1、java一次编译,到处执行----跨平台

2、gc

3、jre和jdk 区别:

    jre(java runtime environment)java运行环境,包含jvm的client,类库(rt.jar:常用的集合、io、math、lang等都在rt.jar包内)

    jdk(java development kit)java开发工具,包含jre(含jvm的client和server)及编译器(javac)、诊断工具(jconsole.exe等)

4、java基础类库:(java开头)

    java.lang(exception/string/stringbuffer/Integer等封装类/math/annotion)

    java.util(concurrent/regex正则表达式/collection/日期date calendar)

参考 https://blog.csdn.net/basycia/article/details/50769838

5、java常用第三方类库:(javax开头)

    javax.swing、javax.naming

6、cas原理

java.util.concurrent包下的类都使用的是cas原理实现并发,例如 automicInteger、concurrentHashMap

主存A,线程缓存数据B,更新值C,只有当B=A时,才会将    C赋值给A。

7、并发特性,可用syn、lock方式实现

原子性

有序性:jvm执行java代码时在保证不影响运行结果情况下会进行指令重排,有序性是避免指令重排。

内存可见

8、volatile关键字

可保证内存可见:线程A修改后立即将数据写入主内存。

有序性:修饰的关键字不被指令重排。保证在执行关键字相关操作时,之前的代码已经执行,之后的代码还未执行,但不能保证关键字之前和之后代码的顺序性。

不能保证原子性。

volatile一个典型的应用场景是 单例模式

class Singleton{
    private volatile static Singleton instance = null;
 
    private Singleton() {
 
    }
 
    public static Singleton getInstance() {
        if(instance==null) {
            synchronized (Singleton.class) {
                if(instance==null)
                    instance = new Singleton();
            }
        }
        return instance;
    }
}

为什么单例模式需要使用volatile修饰?

主要在于instance = new Singleton()这句,这并非是一个原子操作,事实上在 JVM 中这句话大概做了下面 3 件事情:

1.给 instance 分配内存

2.调用 Singleton 的构造函数来初始化成员变量

3.将instance对象指向分配的内存空间(执行完这步 instance 就为非 null 了)。

但是在 JVM 的即时编译器中存在指令重排序的优化。也就是说上面的第二步和第三步的顺序是不能保证的,最终的执行顺序可能是 1-2-3 也可能是 1-3-2。如果是后者,则在 3 执行完毕、2 未执行之前,被线程二抢占了,这时 instance 已经是非 null 了(但却没有初始化),所以线程二会直接返回 instance,然后使用,然后顺理成章地报错。

参考: 

你真的了解volatile关键字吗?

深入浅出CAS




相关内容

热门资讯

玩家分享攻略“咸宁晃晃麻将.真... 家人们!今天小编来为大家解答咸宁晃晃麻将透视挂怎么安装这个问题咨询软件客服徽9752949的挂在哪里...
今日重大发现“皮皮跑胡子.怎么... 您好:皮皮跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款游...
终于了解“潮汕掌上娱.辅助器?... 家人们!今天小编来为大家解答潮汕掌上娱透视挂怎么安装这个问题咨询软件客服徽9784099的挂在哪里买...
终于懂了“约约麻将.怎么开挂?... 终于懂了“约约麻将.怎么开挂?”透视曝光猫腻您好,约约麻将这个游戏其实有挂的,确实是有挂的,需要了解...
玩家攻略科普“八闽福建麻将.辅... 您好:八闽福建麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款...
今日重大发现“新三哥玩.可以开... 网上科普关于“新三哥玩有没有挂”话题很是火热,小编也是针对新三哥玩作*弊开挂的方法以及开挂对应的知识...
今日重磅消息“上海敲麻.到底是... 网上科普关于“上海敲麻有没有挂”话题很是火热,小编也是针对上海敲麻作*弊开挂的方法以及开挂对应的知识...
【今日要闻】“新玉海楼茶苑.可... 有 亲,根据资深记者爆料新玉海楼茶苑是可以开挂的,确实有挂(咨询软件无需...
终于了解“杭麻圈.开挂器?”原... 有 亲,根据资深记者爆料杭麻圈是可以开挂的,确实有挂(咨询软件无需打开直...
玩家分享攻略“棋乐麻将.怎么开... 您好:棋乐麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【4282891】很多玩家在这款游戏...