随笔分类 -  Java并发

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