随笔分类 -  java并发编程

摘要:为什么要使用 Lock 锁 前面我们已经说个,使用同步有两种方式,一种是不使用锁,通过 CAS 来实现,另一种方式是加锁。加锁又分为两种,一种是使用 synchronized,还有一种就是使用 Lock,今天学习的就是 Lock。 既然已经有那么多方式可以实现同步,为什么还要使用 Lock 呢? s 阅读全文
posted @ 2020-07-27 23:58 路半_知风 阅读(531) 评论(0) 推荐(1)
摘要:Callable接口 前面我们提到了创建线程的三种方法,继承 Thread 类,实现 Runnable 接口,通过线程池创建。今天学习创建线程的另一种方式,通过 Callable 接口来创建。 Callable 接口与 Runnable 接口一样,可以给线程提交一个任务让其执行。Callable 接 阅读全文
posted @ 2020-07-23 17:37 路半_知风 阅读(2585) 评论(1) 推荐(1)
摘要:线程池 什么是线程池 我们可以在不影响一个线程的情况下创建另一个线程去完成任务,这样可以提高执行效率。但是如果同一时刻有大量的任务需要执行,而这些任务又比较简单,那么每次都创建一个新的线程肯定会耗费很多时间。为了减少创建线程所花费的时间,人们想出了线程池的办法。线程池中预先创建了一定数量的线程,当需 阅读全文
posted @ 2020-06-30 20:46 路半_知风 阅读(428) 评论(0) 推荐(1)
摘要:悲观锁与乐观锁 悲观锁 一种悲观的思想,总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。传统的关系型数据库里边就使用到了很多这种锁机制,比方行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。再比方Java里面的同步原 阅读全文
posted @ 2020-06-29 17:49 路半_知风 阅读(242) 评论(0) 推荐(0)
摘要:上篇我们了解到并发编程的共享模型,即同一父进程下的其他子线程会共享父进程的资源,并且子线程在共享资源进行写操作时,可能导致不可预料的错误。那么为什么会导致这样的错误呢?有没有办法解决这样的问题呢?要解决这些问题,就要了解java的内存模型。在学习java内存模型之前,我们先要了解什么是内存模型。 内 阅读全文
posted @ 2020-06-27 16:42 路半_知风 阅读(223) 评论(0) 推荐(0)
摘要:基本概念 进程:进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。 一个应用程序至少对应着一个进程,对于一些应用程序,如浏览器或者QQ,允许启动多个同一应用程序,会对应多个进程。 每个进程都有独立的代码和数据空间(进程上下文) 阅读全文
posted @ 2020-06-16 20:06 路半_知风 阅读(123) 评论(0) 推荐(0)