随笔分类 - Java并发
摘要:OS 有哪些方法来完成同步: 互斥量 pthread_mutex_t:重量锁,拿不到锁就 sleep,会进入内核态 synchronized 使用了 mutex 自旋锁 pthread_spin_t:OS 空转 信号量 sem synchronized 字节码原理:monitorenter moni
        阅读全文
                
摘要:package org.jxch.study; public class Demo { static { System.loadLibrary("DemoNative"); } private native void demo(); // 回调 Java 方法 private void callba
        阅读全文
                
摘要:Linux 操作系统中创建线程的方式 int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); 参数名 参数定义 参数解释 pthrea
        阅读全文
                
摘要:使用方法 通用 API 独占式获取 accquire acquireInterruptibly tryAcquireNanos 共享式获取 acquireShared acquireSharedInterruptibly tryAcquireSharedNanos 独占式释放锁 release 共享
        阅读全文
                
摘要:AQS(AbstractQueuedSynchronizer): 获取锁: 独占式获取 accquire acquireInterruptibly tryAcquireNanos 共享式获取 acquireShared acquireSharedInterruptibly tryAcquireSha
        阅读全文
                
摘要:CAS: Compare and swap 比较和交换 在指令的级别,保证该操作的原子性。 原理 如果这个内存地址的值是我所期望的值,那么就把它设成新值。 比如,如果内存地址为100的位置的值是1,我想把值改为2,那么CAS赋值操作就是这样的:如果内存地址为100的位置值是1,那么就把值设为2.所以
        阅读全文
                
摘要:FutureTask 单线程执行框架。 获得线程执行的返回值。 Callable包装成FutureTask,传入Thread对象中(继承了Runnable),start启动线程,然后通过Future接口的get()拿到返回值。 Callable<Object> callable = new Call
        阅读全文
                
摘要:CountDownLatch 只能用一次。 CountDownLatch countDownLatch = new CountDownLatch(5); 当一组线程调用countDownLatch的await方法时,进入等待。直到其他线程调用完5次countDown方法。 CyclicBarrier
        阅读全文
                
摘要:Java中启动一个线程的方式只有两种: 继承Thread类,实例化,调用start()通过Runnable new 出Thread对象,调用start() 也就是说,在Java中除了Thread类中的start方法,没有第二种方案可以启动一个线程。 synchronized 内置锁,线程进入该对象的
        阅读全文
                
摘要:进程、线程、协程 进程:程序运行资源分配的最小单位,进程内部有多个线程,会共享这个进程的资源 线程:CPU调度的最小单位,必须依赖进程而存在。 协程:依赖线程而存在,完全由程序所控制,也就是在用户态执行。一个线程的多个协程的运行是串行的。当一个协程运行时,其它协程必须挂起。同样存在上下文切换问题。更
        阅读全文
                
                    
                
浙公网安备 33010602011771号