![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
y_mk
I'm only happy when it rains.
展开
-
乐观锁与悲观锁,以及Java对CAS的支持
转载自:https://www.cnblogs.com/qjjazry/p/6581568.html1 首先介绍一下乐观锁与悲观锁悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前...转载 2019-03-22 16:22:53 · 185 阅读 · 0 评论 -
Java实现 JSON 的组装和解析
什么是JSON(JavaScriptObject Notation)JSON和xml一样都是数据交换格式。JSON是轻量级的,相比xml占带宽小、效率高JSON只有两种结构:对象和数组/*JSON对象,{}修饰,里面为 key1 : value1, key2 : value2形式,key和value可以是数字、字符串、对象和数组*/json object{ "name" : "y...原创 2019-06-01 21:10:57 · 3622 阅读 · 0 评论 -
Java中使用dom4j解析xml
客户端与服务器常用的数据交换格式有:xml、json、htmlxml体积、占宽带比较大,解析方式有Dom4j、Sax、Pullxml = “文档树”xml文件是树结构的,每个封闭的标签都是一个节点,每个节点都有自己的属性和内容一个xml文件只有一个根节点,但每个节点可以有多个子节点引入dom4j的jar包<dependencies> <!-- 添...原创 2019-06-01 20:06:54 · 151 阅读 · 0 评论 -
ThreadLocal (本地线程)的实现原理
概述ThreadLocal 会为每个线程创建一个副本,类似于线程的私有变量,仅限于这些变量互不影响的前提下;但如果传入的是共享变量,取出的还是那个共享变量,多线程并发安全问题还是要通过其他方法去解决。ThreadLocal 只是提供了保持对象的方法和避免参数的传递,适用 ThreadLocal 的变量应该互相没有依赖关系,常用与:数据库连接、Session管理等ThreadLocal ...原创 2019-05-06 15:56:16 · 2796 阅读 · 0 评论 -
Java并发编程:Volatile关键字
介绍Volatile之前,先要引入多线程的三个特性多线程三大特性多线程有三大特性,原子性、可见性、有序性1. 原子性:一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行例如:把买包子当成一个原子行为,我把钱给店家和店家把包子给我,要么都执行要么都不执行。不可能存在我付了钱,店家不给我包子;或者我没付钱,他送我包子的情况。原子性确保了数据的一致...原创 2019-05-04 15:39:40 · 265 阅读 · 2 评论 -
Java 守护线程(Daemon Thread)
什么是守护线程?Java中有两种线程:守护线程(后台线程)和用户线程(前台线程)守护线程顾名思义是线程中的守护者,为非守护线程(也就是用户线程)提供服务。所以当进程不存在或主线程停止,守护线程失去了存在意义,就会被停止。最好的例子就是垃圾回收线程守护线程的设置方式在线程start之前,调用 setDaemon(true) 方法将普通线程设置为守护线程要注意的是,在守护线程中的子...原创 2019-05-04 14:02:00 · 1180 阅读 · 0 评论 -
Java多线程(三):线程安全问题 (下)Lock
上一篇文章提到通过synchronized实现同步,而在这篇文章中,同步会通过Lock和Condition配合实现,两者都来自jdk1.5并发包Lock本文章会使用java.util.concurrent.locks包内的ReentrantLock类(唯一实现Lock接口的类)和Condition接口模拟出synchronized和wait()配合的同步实现,首先介绍Lock类的方法...原创 2019-03-28 14:29:19 · 246 阅读 · 0 评论 -
Java多线程(三):线程安全问题 (上)synchronized
什么是线程安全问题?当多个线程共享相同的数据资源时,做读操作并不会被影响,而做写操作时可能会引起数据的冲突下面用代码模拟买票系统产生的线程安全问题:public class ThreadDemo { public static void main(String[] args) throws InterruptedException { ThreadTrain threadTr...原创 2019-03-28 11:30:33 · 168 阅读 · 0 评论 -
Java多线程(二):线程的常用方法
线程常用方法——join()、sleep()、interrupt()、setPriority()1、join()方法让调用该方法的线程先执行完毕,而其他线程都处于阻塞状态,直到调用该方法的线程死亡。源码:public final synchronized void join(long millis) throws InterruptedException { ...原创 2019-03-27 20:23:06 · 160 阅读 · 0 评论 -
Java多线程(一):进程与线程的区别、线程的生命周期和线程的创建方法
一、进程与线程的区别1、进程可以理解成程序的一次执行(即动态的),所以一个程序可以对应一个或多个进程(程序的多次执行),而一个进程往往包含一个或多个线程2、每个进程有独立的地址空间,包含资源。而线程共享进程的资源,可以把线程理解为轻量的进程3、线程是处理器调度的基本单位,进程是程序运行的实例为什么要区分进程和线程因为进程的执行开销比较大,把进程划分为多个线程能相对减小执行...原创 2019-03-26 13:47:55 · 1480 阅读 · 0 评论 -
Java使用自定义注解实现ORM框架(Mybatis底层实现原理)
参考:蚂蚁课堂创建需要使用到的注解创建表名称注解定义表名// 限制描述类(可加可不加)@Target(value = { ElementType.TYPE })// 描述注解的生命周期@Retention(RetentionPolicy.RUNTIME)public @interface SetTable { // 对应数据库表名 String value();}...原创 2019-06-01 22:21:11 · 591 阅读 · 0 评论