一、进程同步(锁) 通过之前的学习,我们千方百计实现了程序的异步,让多个任务可以同时在几个进程中并发处理,他们之间的运行没有顺序,一旦开启也不受我们控制。尽管并发编程让我们能更加充分的利用IO资源,但是也给我们带来了新的问题:进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打 ...
分类:
其他好文 时间:
2019-04-22 12:31:34
阅读次数:
136
上章节我们在懒汉式的单例模式上解决了多线程安全的问题,但解决问题的同时,新的问题也随之而来。 上节问题: 1、在静态方法(static)上添加关键字(synchronized同步锁),就是相当于在类上加锁,锁的范围大,损耗性能。 2、加锁、解锁过程消耗资源。 那么,我们该如何解决呢? 此种方法就是懒 ...
分类:
其他好文 时间:
2019-04-10 23:43:20
阅读次数:
286
为何要使用同步? java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查), 将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用, 从而保证了该变量的唯一性和准确性。 1.同步方法 即有synchronized关键字修 ...
分类:
编程语言 时间:
2019-04-07 14:33:53
阅读次数:
199
锁的种类 独享锁 VS 共享锁 独享锁:锁只能被一个线程持有(synchronized) 共享锁:锁可以被多个程序所持有(读写锁) 乐观锁 VS 悲观锁 乐观锁:每次去拿数据的时候都乐观地认为别人不会修改,所以不进行加锁操作。乐观锁适用于多读的应用类型。(CAS,Atomic) CAS(Compar ...
分类:
编程语言 时间:
2019-04-05 00:16:09
阅读次数:
183
为何要使用同步? java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查), 将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用, 从而保证了该变量的唯一性和准确性。 同步的方式 1.同步方法 即有synchroniz... ...
分类:
编程语言 时间:
2019-04-04 20:29:41
阅读次数:
195
1.线程同步(即上锁,同步锁)实现的方式 1)同步代码块 synchronized(obj){ //obj称为同步监视器,obj要监视的对象 } 同步监视器只能是对象,推荐使用共享资源的对象,可以当前对象 this,也可以是其它的对象 1 public class Ticket1 implement ...
分类:
编程语言 时间:
2019-04-03 12:33:28
阅读次数:
202
一.Lock接口 常用方法 Lock提供了一个更加面对对象的锁,在该锁中提供了更多的操作锁的功能。 使用Lock接口,以及其中的lock()方法和unlock()方法替代同步,对电影院卖票案例中Ticket类进行如下代码修改: 二.死锁 同步锁使用的弊端:当线程任务中出现了多个同步(多个锁)时,如果 ...
分类:
编程语言 时间:
2019-03-24 09:15:17
阅读次数:
223
1.同步锁 2.思索,递归锁 3.信号量,同步对象(了解即可) 4.队列 >生产消费者模型是依赖队列产生的 5.进程 并行&并行的区别 并发:是指系统具有处理多个任务(动作)的能力. 并行:是指系统具有同时处理多个任务(动作)的能力 并行是不是并发的一个子集 同步 与 异步 同步:当进程执行到一个I ...
分类:
其他好文 时间:
2019-03-21 01:13:00
阅读次数:
172
1 线程同步 1.1 线程安全 java允许多线程并发控制,当多个线程同时操作一个可共享资源变量时(如对其进行增删改查操作),会导致数据不准确,而且相互之间产生冲突。所以加入同步锁以避免该线程在没有操作完共享资源前其他线程操作共享资源,从而保证该变量的唯一性和准确性。 不同步会发生什么问题?在介绍同 ...
分类:
编程语言 时间:
2019-03-18 11:46:34
阅读次数:
172
一、Thread Dump介绍 1.1什么是Thread Dump? Thread Dump是非常有用的诊断Java应用问题的工具。每一个Java虚拟机都有及时生成所有线程在某一点状态的thread-dump的能力,虽然各个 Java虚拟机打印的thread dump略有不同,但是大多都提供了当前活 ...
分类:
编程语言 时间:
2019-03-13 16:47:42
阅读次数:
148