与前面介绍的锁和 volatile 相比较,对 final 域的读和写更像是普通的变量访问。对于final 域,编译器和处理器要遵守两个重排序规则:在构造函数内对一个 final 域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。初次读一个包含 final 域的对象的引用,与随后初次读这个 final 域,这两个操作之间不能重排序。
锁的释放-获取建立的 happens before 关系锁是 java 并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。下面是锁释放-获取的示例代码:class MonitorExample { int a = 0; public synchronized void writer() { //1 a++;
Spring Boot大大简化了持久化任务,几乎不需要写SQL语句,之前我写过一篇关于Mongodb的——RESTful:Spring Boot with Mongodb。本文将会演示如何在Spring Boot项目中使用mysql数据库。1.建立数据库连接(database connection)在上篇文章中我们新建了一个Spring Boot应用程序,添加了jdbc和data-jpa等starters,以及一个h2数据库依赖,这里我们将配置一个H2数据库。