java
搬砖升级打怪
这个作者很懒,什么都没留下…
展开
-
Java之I/O系统
Java之I/O系统 File类 处理文件目录问题的工具类,可以代表一个特定文件的名称,也能代表一个目录下一组文件的名称。 如果指的是一组文件集,可以对该集合调用list()方法,这个方法会返回一个字符数组。 目录列表器 list():不带参数的方法,可以获得该目录下所包含的全部列表 list(FileNameFilter f):带目录过滤器作为参数,可以筛选获得我们想要的目录列表。需要实现一个实现了FileNameFilter接口的accept(File dir, String name)方法的类对原创 2020-08-10 20:11:00 · 69 阅读 · 0 评论 -
Executor框架
Executor框架 Executor框架的两级模型 java的线程被一对一映射为本地操作系统的线程。 当java线程启动时,会创建一个本地操作系统的线程,当该java线程终止时,本地操作系统的进程也会被回收。 操作系统调度所有的线程并将他们分配给可用的CPU。 上层:java多线程程序将应用分解成多个任务,然后由用户级的调度器Executor框架将这些任务映射为固定数量的线程 下层:由操作系统的内核将这些线程映射到硬件处理器上。 Executor框架的结构 任务:包括被执行任务需要实现的接口:Run原创 2020-08-07 23:26:13 · 87 阅读 · 0 评论 -
java中的线程池
java中的线程池 java并发编程中运用场景最多的框架,主要优点是: 1. 降低资源消耗:通过重复利用已创建的线程来减少线程创建和消耗的开销 2. 提高响应速度:当任务到达时,可以不用等待线程创建就能立即执行 3. 提高线程的可管理性:避免重复创建,可以对线程池内资源进行统一分配,调优和监控。 线程池的实现原理 ThreadPoolExecutor的execute()方法的工作步骤: 当有一个新的任务被提交到线程池时, 线程池先判断核心线程池内的线程是否都在执行任务,如果不是,创建一个新的工作原创 2020-08-07 21:15:17 · 88 阅读 · 0 评论 -
java的并发工具类
java的并发工具类 CountDownLatch 被用来同步一个或者多个任务,强制去等待其他线程完成操作。 CountDownLatch c = new CountDownLatch(3);//初始化一个CountDownLatch的对象的计数器的值为3; 任何调用c.await()的方法都被阻塞,直至这个计数值为0; 其他的任务完成工作的时候可以调用c.countDown()来减小计数器的值。 CountDownLatch对象只能被触发一次,它的计数器的值是不能被重置的。CyclicBarrier可原创 2020-08-07 15:15:54 · 134 阅读 · 0 评论 -
java中的阻塞和非阻塞队列
java中的阻塞和非阻塞队列 实现一个队列的线程安全,有两种方式: 1)使用阻塞队列,即出队和入队共用一把锁或者各自使用一把锁来实现 2)非阻塞队列:可以利用循环CAS的方式实现 java中的阻塞队列 阻塞队列是一个支持两个附加操作的队列,即支持阻塞的插入和移除。 1. 阻塞的插入:当前队列已经满了的时候,队列会阻塞插入元素的线程,直到队列不满 2. 阻塞的移除:当前队列为空的时候,获取元素的队列会阻塞直到队列为非空。 处理方式:抛出异常,返回特殊值,一直阻塞或者超时退出。 经常用于生产者和消费者原创 2020-08-07 11:44:13 · 565 阅读 · 0 评论 -
Java之解语法糖
java的语法糖 语法糖不会改变程序的实质性功能,但能提高效率,减少代码出错的机会。 泛型与类型擦除 泛型:JDK1.5引入的,本质是参数化类型的应用,即所操作的数据类型被指定为一个参数。 这种参数被用在类、接口、方法上,又分别称为:泛型类、泛型接口、泛型参数。 与c#的泛型不同的是,前者的泛型在程序源码,编译后的中间语言,或者运行期间的CLR中都是存在的,是真泛型; 而java的泛型在编译期的语法分析阶段会被擦除为原生类型,并且在相应的地方添加了强制性类型转换,伪泛型。 类型擦除只是在字节码的Code属原创 2020-08-05 23:15:12 · 213 阅读 · 0 评论 -
Java容器类
java的容器类 java的容器类可以自动调节大小,用来保存对象,主要分为: 1. Collection:独立元素的序列,所有的Collection都可以使用for-each语法。 2. Map:存储键值对。 for-each语法: java SE5引入的更高效的用于数组和容器的for语法,不必创建int变量去对由访问项构成的序列进行计数,for-each将自动产生每一项。 任何返回一个数组的方法都可以使用for-each,并且还可以用于任何Iterable对象。 Collection 1. List原创 2020-08-02 23:15:08 · 80 阅读 · 0 评论