线程
文章平均质量分 95
愿你一世安呀
这个作者很懒,什么都没留下…
展开
-
深入理解线程通信【举例说明】
6. 深入理解线程通信【举例说明】6.1 线程之间共享数据Java 里面进行多线程通信的主要方式就是共享内存的方式,共享内存主要的关注点有两个:可见 性和有序性原子性。Java 内存模型(JMM)解决了可见性和有序性的问题,而锁解决了原子性的 问题,理想情况下我们希望做到“同步”和“互斥”。有以下常规实现方法:6.1.1 将数据抽象成一个类,并将数据的操作作为这个类的方法Data类/** * 多个线程共享数据 * i++ * i-- */public class Data {原创 2021-08-05 15:00:55 · 121 阅读 · 0 评论 -
线程池简介
5. 线程池线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量,超出数量的线程排队等候,等其它线程执行完毕, 再从队列中取出任务来执行。他的主要特点为:线程复用;控制最大并发数;管理线程。5.1 为什么要用线程池?线程池提供了一个线程队列,队列中保存着所有等待状态的线程,避免了创建与销毁的额外开销,提高了响应的速度。线程池还维护一些基本统计信息,例如已完成任务的数量。使用线程池有很多好处:降低资源消耗。 通过重复利用原创 2021-08-04 14:29:27 · 355 阅读 · 0 评论 -
线程安全之锁机制
4. 线程安全之锁机制线程安全问题的主要诱因存在共享数据【临界资源】存在多个线程共同操作这些共享数据解决问题的方法:同一时刻仅有一个线程在操作共享数据,其他线程必须等到该线程处理完数据后再对共享数据进行操作4.1 锁的分类同一进程 面试过程时,经常会被问到各种各样的锁,如乐观锁、读写锁等等,非常繁多。这些经常问到的锁是一些锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计,下面总结的内容是对每个锁的名词进行一定的解释:乐观锁/悲观锁原创 2021-08-01 15:20:24 · 889 阅读 · 0 评论 -
线程安全之线程的三大核心
3. 线程安全之线程的三大核心3.1 Java内存模型JMMJava 内存模型(Java Memory Model),本身是一个抽象的概念,并不真实存在,他描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。JMM 描述的一组规则,围绕着原子性、有序性、可见性展开。JMM 与 Java 内存区域划分是不同的概念层次,相似点是都存在共享区域和私有区域。方法里的基本数据类型本地变量将直接存储在工作内存的栈帧结构中应用类型的本地变原创 2021-07-30 22:38:04 · 136 阅读 · 0 评论 -
线程的常用方法
2.线程的常用方法2.1 Thread 类中的 start() 和 run() 方法有什么区别?public class TestStartRun { public static void main(String[] args) { Thread thread = new Thread() { @Override public void run() { System.out.println("子线程原创 2021-07-29 22:40:15 · 461 阅读 · 0 评论 -
线程的状态
1. 线程的状态1.1 线程的创建方式继承Thread类 Thread 类本质上是实现了 Runnable 接口的一个实例,代表一个线程的实例。启动线程的唯一方 法就是通过Thread 类的 start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。 在 Java 5.0 提供了 java.util.concurrent (简称 JUC )包,在此包中增加了在并发编程中很常用的实用工具类,用于定义类似于线程的自定义子系统,包括线程池、原创 2021-07-28 23:14:33 · 201 阅读 · 0 评论