并发编程
等一轮明月
java,ios
展开
-
并发编程(一)
关于java中线程的一些基础理解 1:并发编程的基础: 为什么是使用多线程: 一个线程在一个时刻只能运行在一个处理器核心上,随着处理器核心的增多,开启多个线程能够提高处理器核心的利用率。 线程的优先级: java进程中,通过一个整形成员变量priority来控制优先级,范围1-10,创建线程时可以通过setPriority(int)来设置优先级,默认是5,优先级高的分配的时间片要多于优先级低的线程。 设置优先级,对于频繁阻塞的线程需要设置较高优先级,偏重计算(需要cpu时间久偏运算)则设置较低优先级,原创 2021-07-26 17:11:50 · 111 阅读 · 0 评论 -
CountdownLatch和CyclicBarrier
CountdownLatch和CyclicBarrier CountDownLatch: 具有计数器的功能,等待其他线程执行完毕,主线程在继续执行,用于监听某些初始化操作,并且线程进行阻塞,等初始化执行完毕后,通知主线程继续工作执行 CyclicBarrier: 所有线程在其他线程没有准备好之前都在被阻塞中,等到所有线程都准备好了才继续执行。 区别: CountDownLatch: 一个线程(或者多个), 等待另外N个线程完成某个事情之后才能执行。 CyclicBrrier: N个线程相互等待,任何一个原创 2021-04-07 09:53:16 · 105 阅读 · 1 评论 -
volatile关键字分析
volatile: volatile通常被比喻成”轻量级的synchronized 特性:可见性,有序性。 1:可见性:可见性是指当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值 原理:如果一个变量被volatile所修饰的话,在每次数据变化之后,其值都会被强制刷入主存。而其他处理器的缓存由于遵守了缓存一致性协议,也会把这个变量的值从主存加载到自己的缓存中。这就保证了一个volatile在并发编程中,其值在多个缓存中是可见的。 有序性:volatile禁止指令重排没,保原创 2021-03-19 11:33:38 · 66 阅读 · 0 评论 -
Path、Paths 和 Files工具类的使用
目录 1.创建文件或目录2.删除文件3.移动文件4.复制文件5.从文件读取数据6.从文件按行读取数据7.向文件写入数据8.获得文件路径的几种方法 JDK1.7 引入了新的IO操作类。在java.nio.file包下,包括Files、Paths等工具类。 中文文档:...转载 2020-10-23 13:58:19 · 662 阅读 · 0 评论 -
多线程之ThreadLocal
多线程之ThreadLocal 问题:多线程之间的数据共享,保证线程安全。 举例代码实现: public class ThreadLocalTest { private static ThreadLocal<Integer> x = new ThreadLocal<Integer>(); public static void main(String[] args) { for(int i=0;i<2;i++){ new Thread(new Runnable(原创 2020-10-09 18:30:23 · 89 阅读 · 0 评论 -
Akka并发处理数据:
Akka并发处理数据: 背景:涉及同时多个文件并发处理计算为了提高效率采用Akka。 介绍: akka:是一个开发库和运行环境,用于构建高并发、分布式、可容错、事件驱动的基于JVM的应用, akka是基于actor模型的实现,actor模型也就是响应式模型,它和我们常用的基于方法堵塞式的调用不同,而是基于消息的异步调用。 Actor模型:由三个重要部分组成,它们是状态(state),行为(Behavior)和邮箱(Mailbox); 一:创键一个actor. package com.akkaTes原创 2020-08-20 18:27:26 · 423 阅读 · 0 评论