生产者消费者是常见的同步问题。一个队列,头部生产数据,尾部消费数据,队列的长度为固定值。当生产的速度大于消费的速度时,队列逐渐会填满,这时就会阻塞住。当尾部消费了数据之后,生产者就可以继续生产了。 生产者 消费者 测试类 运行结果: 数据超过3个时候就不能生产了,需要等待消费者。 ...
分类:
其他好文 时间:
2017-04-12 21:40:58
阅读次数:
172
一、饿汉式 这种方式基于classloder机制避免了多线程的同步问题 这种实现方式适合单例占用内存比较小,在初始化时就会被用到的情况。但是如果单例占用的内存比较大,或单例只是在某个特定场景下才会用到,使用饿汉模式就不合适了,这时候就需要用到懒汉模式进行延迟加载。 二、懒汉式单例 使用静态内部类 这 ...
分类:
编程语言 时间:
2017-04-09 12:55:05
阅读次数:
126
1.在单例设计模式中,会出现多线程的同步问题。主要表现在,当使用的是懒汉式单例设计模式来创建对象的时候,若有多个进程同时在执行,则有可能会创建了多个对象,但这个不是单例设计模式应该出现的问题。所以需要使用锁机制来解决。需要注意的是,饿汉式不会出现这个问题。具体代码如下。 姑且也许可以这么认为,在有判 ...
分类:
编程语言 时间:
2017-04-05 00:46:04
阅读次数:
141
上一篇讲述了并发包下的Lock,Lock可以更好的解决线程同步问题,使之更面向对象,并且ReadWriteLock在处理同步时更强大,那么同样,线程间仅仅互斥是不够的,还需要通信,本篇的内容是基于上篇之上,使用Lock如何处理线程通信。 那么引入本篇的主角,Condition,Condition 将 ...
分类:
编程语言 时间:
2017-04-04 12:49:30
阅读次数:
202
Java中的多线程你只要看这一篇就够了 引 如果对什么是线程、什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内。 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现。说这个话其实只有一半对,因为反应“多角色”的程序代码,最起码每个角 ...
分类:
编程语言 时间:
2017-04-03 22:12:28
阅读次数:
226
1.饿汉式,优点是实现比较简单,不存在多线程同步问题,避免synchronized所造成的性能问题,缺点是当类被加载的时候,会初始化静态的实例,静态实例被创建并分配内存空间,实例会一直占用这段内存,即使没有用到这个实例,当类被卸载时,静态实例被摧毁,并释放所占用的内存,因此..
分类:
其他好文 时间:
2017-03-27 20:02:57
阅读次数:
106
当你有多台服务器的时候需要用memcache做数据缓存,讲面临一个如果缓存的数据发生变化更新缓存的问题。缓存的的存储,是前台项目应用,而变更数据是在后台,这是两个独立的项目,当你的缓存存储的是对象,那么在后台变更数据的时候是无法delete掉缓存的数据的,在delete的时候会去查找这个对象在后台项... ...
分类:
其他好文 时间:
2017-03-27 11:11:58
阅读次数:
136
读者写者问题是非常经典的同步问题,本文首先用信号量来解决这个问题,并结合代码分析什么是读者优先、什么是写者优先,然后给出读写锁的解决方案,并指出在Linux下读写锁的注意事项。 读者写者问题 读者写者问题描述的是这么一种情况:对象在多个线程(或者进程)之间共享,其中一些线程只会读数据,另外一些线程只 ...
分类:
其他好文 时间:
2017-03-20 13:27:13
阅读次数:
298
线程同步问题大都使用synchronized解决,有同步代码块和同步方法的两种方式,主要记一下这两种的区别 测试代码: 运行结果如下: 这段代码的打印结果是,showA…..showC…..会很快打印出来,showB…..会隔一段时间才打印出来,那么showB为什么不能像showC那样很快被调用呢? ...
分类:
编程语言 时间:
2017-03-17 14:09:55
阅读次数:
408
进程间通信简单的说有三个问题,第一个问题是:一个进程如何把信息传递给另一个,第二个问题是:要确保两个或者更多的进程在互动中不会出现交叉(即是进程互斥问题),第三个问题是:进程间同步问题、 四种进程或者线程同步互斥的控制方法 1):临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制 ...
分类:
系统相关 时间:
2017-03-13 11:31:10
阅读次数:
342