1.饿汉式,优点是实现比较简单,不存在多线程同步问题,避免synchronized所造成的性能问题,缺点是当类被加载的时候,会初始化静态的实例,静态实例被创建并分配内存空间,实例会一直占用这段内存,即使没有用到这个实例,当类被卸载时,静态实例被摧毁,并释放所占用的内存,因此..
分类:
其他好文 时间:
2017-03-27 20:02:57
阅读次数:
106
串行并行异步同步的概念很容易让人混淆,关于这几个概念我在第一篇GCD中有解释,但是还不够清晰,所以这里重写一篇博客专门对这几个概念进行区分: 先说一下队列和任务: (1)队列分为串行和并行,任务的执行分为同步和异步,异步是多线程的代名词,异步在实际引用中会开启新的线程,执行耗时操作。 (2)队列只是 ...
分类:
移动开发 时间:
2017-03-01 14:03:44
阅读次数:
214
ArrayBlockingQueueLinkedBlockingQueue 传统方式下用Collections工具类提供的synchronizedCollection方法来获得同步集合。 java5中还提供了如下一些同步集合类:> java.util.concurrent - Java并发工具包> ...
分类:
编程语言 时间:
2017-02-26 23:26:25
阅读次数:
259
同步(Synchrounous)和异步(Asynchrounous) 同步和异步通常用来形容一次方法调用。同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。异步方法调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用者就可以继续后续的操作。而异步方法通常会在另一个线程中“ ...
分类:
编程语言 时间:
2017-02-13 12:18:24
阅读次数:
301
Net学习难点讨论系列17 - 线程本地变量的使用 关于C#多线程的文章,大部分都在讨论线程的起停或者是多线程同步问题。多线程同步就是在不同线程中访问同一个变量(一般是线程工作函数外部的变量),众所周知在不使用线程同步的机制下,由于竟态的存在会使某些线程产生脏读或者是覆盖其它线程已写入的值(各种混乱 ...
分类:
编程语言 时间:
2017-02-06 12:48:45
阅读次数:
264
关于C#多线程的文章,大部分都在讨论线程的起停或者是多线程同步问题。多线程同步就是在不同线程中访问同一个变量(一般是线程工作函数外部的变量),众所周知在不使用线程同步的机制下,由于竟态的存在会使某些线程产生脏读或者是覆盖其它线程已写入的值(各种混乱)。而另外一种情况就是我们想让线程所访问的变量属于线 ...
分类:
编程语言 时间:
2017-01-30 22:49:51
阅读次数:
266
关键代码:构造函数是私有的。 优点: 1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存)。 2、避免对资源的多重占用(比如写文件操作)。 缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。 单例模式的几 ...
分类:
其他好文 时间:
2017-01-17 23:08:46
阅读次数:
281
关于volatile,找了一堆资料看,看完后想找一个方法去做测试,测了很久,感觉跟没有一样。 这本书《深入理解Java内存模型》,对volatile描述中有这样一个比喻的说法,如下代码所示,对a的读写相当于对b的同步读写。 也就是说,volatile只保证了读与写的同步,每次读取都是得到最新值,每次 ...
分类:
编程语言 时间:
2016-12-30 07:35:33
阅读次数:
183
用在多线程,同步变量。 线程为了提高效率,将某成员变量(如A)拷贝了一份(如B),线程中对A的访问其实访问的是B。只在某些动作时才进行A和B的同步。因此存在A和B不一致的情况。volatile就是用来避免这种情况的。volatile告诉jvm, 它所修饰的变量不保留拷贝,直接访问主内存中的(也就是上 ...
分类:
编程语言 时间:
2016-12-26 00:27:27
阅读次数:
329