java
coco猫
这个作者很懒,什么都没留下…
展开
-
线程(二)笔记
Exchanger 实际可以看作一个同步点,两个线程在该同步点能够以线程安全的方式互换数据。如果两个线程的运行速度不同,则运行的较快的线程会被阻塞,直到运行较慢的线程赶到同步点之后,两个线程才可开始交换数据。如果要在线程间互发多组数据,可以使用blockingQueue接口,特点是:如果队列里没有可用空间,则插入操作会被阻塞,如果队列里没有可用数据,则删除操作会被阻塞。如果想要插入操作和删除一...原创 2019-05-02 18:55:17 · 108 阅读 · 0 评论 -
内存栅栏 笔记
简单来说,内存栅栏就是从本地或工作内存到主存之间的拷贝动作。仅当系操作线程先跨越内存栅栏而读线程后跨越内存栅栏的情况下,写操作线程所做的变更才对其他线程可见。关键字synchronized 和volatile都强制规定了所有的变更必须全局可见,该特性有助于跨越内存边界动作的发生,无论是有意为之还是无意。在程序运行过程中,所有的变更会先在寄存器或本地cache中完成,然后才会被拷贝到主存...原创 2019-04-29 19:55:08 · 178 阅读 · 0 评论 -
线程(一) 笔记
处理器核心线程数:RunTime.getRunTime().availableProcessors();计算程序所需线程的总数:线程数 = CPU可用核心数/(1-阻塞系数),其中阻塞系数的取值在0-1之间计算紧密型任务的阻塞系数为0,而IO密集型任务的阻塞系数接近1构建计算密集型并发应用的一些经验:子任务的划分数应不少于处理器核心数。 线程数多于处理器核心数对性能提升毫...原创 2019-04-29 22:15:56 · 216 阅读 · 0 评论