Java中通过锁实现同步的方式主要有2种:通过synchronized关键字和显示的lock。
JVM字节码执行引擎和编译、优化
Java作为跨平台的语言离不开JVM的支持,Java语言首先经过Javac编译器编译为class字节码文件然后被JVM解释、编译为本地机器码,然后被os执行,由于JVM中间这一层的存在所以Java语言才能跨平台,同时除了Java,ruby、scala等语言经过编译后的字节码只要符合JVM字节码规范也能够被JVM执行,所以字节码是一种规范,了解JVM执行引擎对学习Java也很有帮助。
Concurrenthashmap
大家都知道Java集合框架中,hashmap是非线程安全的,在并发环境下会出现错误情况,具体的原因分析参考:Hashmap线程安全性。Java也提供了相应的线程安全类,如Hashtable、ConcurrentHashMap等。下面介绍一下ConcurrentHashmap(JDK1.7为例)。
Violate
在Java高并发环境下,多个线程之间可能存在资源共享情况,可能造成了数据不一致情况。很多人都想到可以利用加锁的方式来实现,如Java中的synchronized同步块和Lock,然而这种方式虽然可以解决问题,但加锁的本质是thread,只允许同一时刻只有一个线程来访问同步块,而在有些情况下我们并不需要严格的同步,只保证能读写最新的值即可,所以volatile能达到这个效果。
SpringMVC框架概括
SpringMVC是web开发中一种优良的MVC框架,它分离了控制器、模型对象、分派器以及处理程序对象的角色。当前的MVC框架有多种,主要有Struts1.x、Struts2、SpringMVC,而这些MVC框架都是在围绕着Controller进行重构和改善,他们主要的特点可以简单的概括为下图。
SpringMVC
SpringMVC通过DispatcherServlet来处理请求信息,其中servlet-mapping配置指定了由Spring MVC 处理的请求的路径。下图中url-pattern被指定为/,这与/*有很大不同。