欢迎关注下文:单例模式不是一件小事,快回来看看。 单例模式是一种创建型模式,某个类采用单例模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点。 主要思想如下: 将构造方法私有化( 声明为 private ),这样外界不能随意 new 出新的实例对象; 声明一个私有的静态 ...
分类:
其他好文 时间:
2017-06-15 21:43:33
阅读次数:
151
以下内容转自http://ifeve.com/java-memory-model-6/: Java内存模型规范了Java虚拟机与计算机内存是如何协同工作的。Java虚拟机是一个完整的计算机的一个模型,因此这个模型自然也包含一个内存模型——又称为Java内存模型。 如果你想设计表现良好的并发程序,理解 ...
分类:
编程语言 时间:
2017-06-15 10:24:20
阅读次数:
128
因为在电商网站工作的原因,对于秒杀、闪购等促销形式相当熟悉。无外乎商家拿出一定量的库存去做所谓的“亏本买卖”,其目的是用有限的库存去吸引无限的流量。然而,我却碰到过因为系统问题,导致秒杀品超卖的情况。可怜的商户其实只提供了10双9.9元的童鞋做秒杀,却在瞬间内卖出了1000双! 类似这样的问题,在非 ...
分类:
编程语言 时间:
2017-06-14 21:06:16
阅读次数:
290
volatile是变量修饰符,而synchronized则是作用于一段代码或方法;如下三句get代码: geti1() 得到存储在当前线程中i1的数值。多个线程有多个i1变量拷贝,而且这些i1之间可以相互不同。换句话说,另一个线程可能已经改变了它线程内的i1值,而这个值可以和当前线程中的i1值不相同 ...
分类:
编程语言 时间:
2017-06-13 14:39:49
阅读次数:
174
/*需求:买票分析:多个窗口卖票 是并发的,是多线程利用Runnable接口,传入一个对象,开启多线程 */class Ticket implements Runnable{ private int num=100; Object obj=new Object(); public void run( ...
分类:
编程语言 时间:
2017-06-08 22:36:20
阅读次数:
156
package tongbu.cn; /* * 多个线程同时操作同一资源,会引起卖出的票为负数,为了解决这个问题,就要使用同步 * 所谓同步,就是多个操作在同一时间段内 只能有一个线程进行 * 同步代码块的格式 * synchronized(同步对象){ * 需要同步的代码 * } */ //一个类... ...
分类:
其他好文 时间:
2017-06-05 15:43:52
阅读次数:
112
14.同步方法和同步代码块的区别是什么? 在Java语言中,每一个对象有一把锁。线程可以使用synchronized关键字来获取对象上的锁。synchronized关键字可应用在方法级别(粗粒度锁)或者是代码块级别(细粒度锁)。 15.在监视器(Monitor)内部,是如何做线程同步的?程序应该做哪 ...
分类:
其他好文 时间:
2017-06-04 21:16:12
阅读次数:
196
每个Java对象都可以用做一个实现同步的锁,这些锁被称为内置锁或监视器锁。线程在进入同步代码块之前会自动获取锁,并且在退出同步代码块时会自动释放锁。获得内置锁的唯一途径就是进入由这个锁保护的同步代码块或方法。 当某个线程请求一个由其他线程持有的锁时,发出请求的线程就会阻塞。然而,由于内置锁是可重入的 ...
分类:
编程语言 时间:
2017-05-24 13:37:56
阅读次数:
175
synchronized关键字代表着同步的意思,在Java中被synchronized修饰的有三种情况 1.同步代码块 2.同步函数 3.静态同步函数 ...
分类:
编程语言 时间:
2017-05-18 20:26:54
阅读次数:
250
synchronized是Java中的关键字,在并发编程中被称为内置锁或者监视器锁。当用它来修饰一个方法或者一个代码块的时候能够保证同一时刻最多只有一个线程执行该段代码。 Java的内置锁相当于一种互斥锁,最多只有一个线程能够持有这种锁,故而由这个锁保护的同步代码块会以原子方式执行,多个线程在执行该 ...
分类:
编程语言 时间:
2017-05-16 17:25:57
阅读次数:
133