多线程
文章平均质量分 76
gwt0425
这个作者很懒,什么都没留下…
展开
-
Go和Kotlin/Native协程对比
说明系统说明Kotlin版本:1.4.10Golang版本:1.12.9OS:WindowsCPU:4核8线程 3.6GHz内存:32G其他说明由于Kotlin Native的协程默认只支持单线程,因此限制Goroutines也只使用单核测试1为了公平Kotlin不在jvm上跑,Kotlin和Go均编译为exe可执行文件测试2会对比Kotlin在jvm多线程和不限制Goroutines的对比,这是最常用的开发场景但由于主力服务端还是Linux,后期也许会增加在Linux系统上的对原创 2020-11-11 16:23:20 · 3064 阅读 · 2 评论 -
并发框架类及其功能(2)
Future和Callablepublic class FutureTest { static class Task implements Callable{ @Override public Object call() throws Exception { Thread.sleep(3000); return原创 2017-09-17 13:53:43 · 273 阅读 · 0 评论 -
多线程基本概念(1)
并发编程的三个概念原子性:一系列操作,要么独自执行完毕,要么完全不执行(体现不可分割)可见性:当一个线程修改了对象的状态后,其他线程能看到状态的变化有序性:即本线程内代码执行的顺序按照代码的先后顺序执行,(参见指令重排序)volatile原理volatile变量提供可见性,但不保证原子性。要满足以下条件才应该使用:1.运算结果不依赖当前值或者只有一个线程参与修改(i++不行)2.变量不需要原创 2017-09-14 16:10:14 · 198 阅读 · 0 评论 -
CAS原理
**CAS (campare and swap)算法与**AtomicInteger 的实现原理原理:CAS有三个操作数:内存值V,预期值A,更新值B如果V==A, 则V被赋值为B否则不干任何事(或循环,直到上述判断成立)public class AtomicInteger extends Number implements java.io.Serializable { priva原创 2017-09-15 10:51:34 · 287 阅读 · 0 评论 -
并发框架类及其功能(1)
ReetrantLock:可重入锁,lock()几次就需要unlock()几次Condition:实现await()和signal()来和锁实现等待通知机制Semaphore: 信号量,指定数量的线程可以访问资源,控制并发访问量,防止计算机资源耗尽。可以通过多次调用release()来增加初始许可,ReentrantReadWriteLock: 读写锁,读-读能并发,读-写和写-写会相互阻塞Coun原创 2017-09-15 10:58:56 · 149 阅读 · 0 评论 -
线程池简介
为了避免频繁地创建和销毁线程,使用线程池来进行复用。newFixedThreadPool(int nThreads): 固定线程数的线程池newSingleThreadExecutor(): 可复用的单线程执行器newCachedThreadPool(): 根据情况来创建线程,如果线程有空闲则复用。如果所有线程都在工作,又有新的任务,则会创建新的线程。newSingleThreadSche原创 2017-09-15 10:48:56 · 193 阅读 · 0 评论 -
ThreadLocal详解
public void set(Object value)设置当前线程的线程局部变量的值。public T get()该方法返回当前线程所对应的线程局部变量。public void remove()将当前线程局部变量的值删除,目的是为了减少内存的占用,该方法是JDK 5.0新增的方法。需要指出的是,当线程结束后,对应该线程的局部变量将自动被垃圾回收,所以显式调用该方法清除线程的局部变量并不是必须原创 2017-09-15 10:46:05 · 160 阅读 · 0 评论 -
并发容器简介
CurrentHashMap: 线程安全的HashMap另一种线程安全的HashMappublic static Map m = Collections.synchronizedMap(new HashMap());//实现方式//但并发性不高public V get(Object key) { synchronized (mutex) {return m.get(key);}}Co原创 2017-09-15 10:44:08 · 228 阅读 · 0 评论 -
AbstractQueuedSynchronizer
这是一篇不错的文章这货是整个concurrent包的灵魂类子类通过继承并需要实现它的方法来管理状态,通过acquire和release的方式来操作状态。然而多线程环境中对状态的操纵必须保证原子性,因此子类需要使用这个同步器提供的getState()、setState(int)、compareAndSetState(int,int)该同步器可以作为排他模式或者共享模式来运行。如Reentrant原创 2017-09-14 16:37:14 · 191 阅读 · 0 评论 -
ReentrantLock的实现,加上Condition
方法 作用 lock() 加锁 lockInterruptibly() 可以被打断的锁 tryLock(5, TimeUnit.SECOND) 会等待一段时间。成功返回true,否则返回false public class TestLock implement Runnable{ public static ReentrantLock lock = ne原创 2017-09-14 16:28:00 · 173 阅读 · 0 评论