08_02_串行算法的并行化 2022-05-15 2023-04-03 编程语言 / Java 5 分钟读完 (大约787个字)串行算法的并行化一、并行化要求 递归的每次迭代都是独立的 将每个迭代拆分成任务并发执行 java, 并发编程 阅读更多
08_01_线程池的使用 2022-05-15 2023-04-03 编程语言 / Java 13 分钟读完 (大约1943个字)线程池的使用一、默认线程池的弊端并非所有任务都能适用于默认的执行策略,比如: 依赖性任务 线程封闭的任务 长时间运行的任务 使用线程本地变量的任务 这类任务往往需要指定特定的执行策略,否则可能会产生活跃性问题。 java, 并发编程 阅读更多
07_05_程序关闭 2022-05-15 2023-04-03 编程语言 / Java 5 分钟读完 (大约807个字)程序关闭JVM 既可以正常关闭,也可以强行关闭。 正常关闭方式有: 最后一个“正常(非守护)”线程结束时 调用了 System.exit() 方法 通过其他特定于平台的方法(比如发送 SIGNAL 信号,或键入 CRTL + C) java, 并发编程 阅读更多
07_04_服务停止 2022-05-15 2023-04-03 编程语言 / Java 12 分钟读完 (大约1819个字)服务停止应用程序中通常会创建拥有多个线程的服务,比如线程池。 一般来说,服务的生命周期基本都比线程的生命周期要长。 当要停止服务时,服务拥有的这些线程也需要同时结束,所以服务应该要提供相应的生命周期方法,比如 shutdown()、shutdownNow() 这样的。 java, 并发编程 阅读更多
07_02_线程中断 2022-05-15 2023-04-03 编程语言 / Java 5 分钟读完 (大约788个字)线程中断中断线程,指的是向线程发起一个中断信号。 其目的是为了中断线程,对象是线程,而不是线程内运行的任务。 java, 并发编程 阅读更多
07_03_中断响应 2022-05-15 2023-04-03 编程语言 / Java 12 分钟读完 (大约1789个字)中断响应在取消任务和中断线程中,中断都起到了很大作用: 取消任务,最合理的方式就是使用中断 中断线程,线程收到中断后作何处理 但是有个问题: 任务和线程都能接收中断请求,那怎么区分? 也就是,中断响应由谁来负责? java, 并发编程 阅读更多
06_任务的执行 2022-05-15 2023-04-03 编程语言 / Java 18 分钟读完 (大约2661个字)任务的执行一、在线程中执行任务1.1 串行执行串行执行,是指所有任务都在单个线程中串行地执行。 123456789class SingleThreadWebServer { public static void main(String[] args) throws IOException { ServerSocket serverSocket = new ServerSocket(80); while (true) { Socket connection = serverSocket.accept(); handleRequest(connection); } }} 串行执行,一般来说吞吐率或速响应性都比较差。 java, 并发编程 阅读更多
05_基础构建模块 2022-05-15 2023-04-03 编程语言 / Java 11 分钟读完 (大约1605个字)基础构建模块一、同步容器 同步容器类都是线程安全的,比如 Vector 和 HashTable 实现线程安全的方式是:将它们的状态都封装起来,所有对外接口都是同步方法 对容器状态的访问都串行化,保证每次只有一个线程访问容器 能保证单个操作是线程安全的,但是复合操作是不能保证线程安全的 常见的不安全的复合操作包括:迭代、跳转、条件运算 java, 并发编程 阅读更多
07_01_任务取消 2022-05-15 2023-04-03 编程语言 / Java 9 分钟读完 (大约1298个字)任务取消任务、线程、服务、应用程序之间的关系: 任务是最小的执行单元 任务在线程中执行 线程在服务(比如线程池服务)中运行 服务在应用程序(JVM)中运行 java, 并发编程 阅读更多
04_对象的组合 2022-05-15 2023-04-03 编程语言 / Java 14 分钟读完 (大约2039个字)对象的组合一、设计线程安全的类1.1 设计过程1.1.1 收集对象状态 收集类对象的所有状态 如果对象中引用了其他对象,那么该对象的状态也包括引用对象的状态 如果发布了某个可变对象的引用,那么就不应该算作对象的状态 java, 并发编程 阅读更多