Java-CAS
在Java并发中,我们最初接触的应该就是synchronized
关键字了,但是synchronized
属于重量级锁,很多时候会引起性能问题,volatile
也是个不错的选择,但是volatile
不能保证原子性,只能在某些场合下使用。
在Java并发中,我们最初接触的应该就是synchronized
关键字了,但是synchronized
属于重量级锁,很多时候会引起性能问题,volatile
也是个不错的选择,但是volatile
不能保证原子性,只能在某些场合下使用。
Java的内存模型就决定了其会有线程安全的问题,我们都知道java的内存模型中有主内存和线程的工作内存之分,主内存上存放的是线程共享的变量(实例字段,静态字段和构成数组的元素),线程的工作内存是线程私有的空间,存放的是线程私有的变量(方法参数与局部变量)。
双亲委派机制又称为父级委托模型。想要了解它,还需理解[类加载]机制、类加载器、类加载器的层级关系。
类加载过程就是将.class文件转化为Class对象,类实例化的过程,(User user = new User(); 这个过程是对象实例化的过程);
一个.class文件只有一个Class对象(字节码对象),可以有无数个对象(例如:new User();)
Activity的启动模式是android系统管理activity的重要设置项和方式。对应AndroidManifest中activity节点下的launchMode属性。
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
说起线程,就会想到进程。进程是程序运行资源分配的最小单位。进程是操作系统进行资源分配的最小单位,其中资源包括:CPU、内存空间、 磁盘 IO 等,同一进程中的多条线程共享该进程中的全部系统资源,而进程和进程 之间是相互独立的。进程是具有一定独立功能的程序关于某个数据集合上的一次 运行活动,进程是系统进行资源分配和调度的一个独立单位。
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范(Java SE 7版)》的规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如图所示: