10 2019 档案
摘要:Future 用于异步计算,可以获取异步计算结果、取消异步任务、判断任务是否被取消、是否执行完成。 1、get get()用于获取异步计算结果,如果计算未完成,则阻塞当前线程,直到计算完成 task类 public class CallableTask implements Callable<Str
阅读全文
摘要:什么是线程池 线程池是一种多线程的实现形式,处理过程中,将任务添加到队列,在创建线程后自动执行,线程池中的线程使用默认优先级(5)执行 为什么使用线程池 在实际应用开发中,我们很少直接使用Thread类来创建线程,因为大量的创建和销毁线程会带来很大的系统开销 而线程池会保留核心线程,释放不常用线程,
阅读全文
摘要:要使线程安全、快速、可靠的停下来并非易事,java并未提供机制保证线程安全的停止,但是我们可以通过使用中断来完成线程的停止和关闭; 本章节只总结基础线程的取消和关闭,类似封装库提供的方法如Future、线程池不在本章节讨论。 1、interrupted方法 Thread提供了中断相关的方法,这里需要
阅读全文
摘要:线程状态 1、OS层面 初始状态 可运行状态 运行状态 阻塞状态 终止状态 2、java语言层面 初始状态 运行状态 等待状态 限时等待状态 终止状态 java语言层面,无法区分线程是可运行还是运行(OS层面的状态) 基本使用 创建、运行、休眠、让步 1、创建 继承Thread类,并重写run方法;
阅读全文
摘要:什么是并发编程 简单的说,所谓的并发编程指的是同一台处理器“同时”处理多个任务。 并发的三种场景 1、分工 合理的拆解不同的任务,并能分配到线程,使多个任务更高效的执行。 2、同步 线程的执行依赖其他线程的执行结果。 3、互斥 多个线程需要抢占共享资源。 并发问题的源头 多线程的出现虽然可以提高应用
阅读全文