01 2025 档案
并发编程记录
摘要:原子性,可见性,有序性 happens-before 原则6条 管程: 互斥:临界区,共享资源 同步 条件变量,等待队列 关于活锁中的"谦让":比如释放锁 CopyOnWriteList ,所谓写时复制: 1. 读的时候读原数据 2. 写(全程加锁):原来的数据可能被读,考虑开一个副本再写,然后替换 阅读全文
posted @ 2025-01-15 22:54 towboat 阅读(20) 评论(0) 推荐(0)
threadpool execute( )
摘要:线程池的execute实现逻辑: 向线程池提交一个任务,如果线程数不超过核心线程数,就创建线程,否则加入阻塞队列。这里创建的"线程"是一个包装thread类(通过继承)的类,其中run( ) 是一个循环,不断从阻塞队列中取任务执行 final void runWorker(Worker w) { R 阅读全文
posted @ 2025-01-02 22:05 towboat 阅读(24) 评论(0) 推荐(0)
如何批量执行异步任务?
摘要:现在有多个异步任务需要处理,考虑用阻塞队列 给线程池提交任务: 将future结果加入阻塞队列 这样先执行完成的可以先消费 BlockingQueue<Integer> bq = new LinkedBlockingQueue<>(); //电商S1报价异步进入阻塞队列 executor.execu 阅读全文
posted @ 2025-01-02 21:40 towboat 阅读(24) 评论(0) 推荐(0)
Future 与 FutureTask与线程池
摘要:FutureTask 有future与Runnable的特征 (实现interface) 线程池execute(Runnable) 返回 Future<> future , 可以通过 future.get( ) 获取结果 也可以把FutureTask 提交到线程池执行,然后直接task.get( ) 阅读全文
posted @ 2025-01-02 15:24 towboat 阅读(53) 评论(0) 推荐(0)