随笔分类 -  java线程

摘要:目录 0、请你说说线程和进程的区别 1、请你说说多线程 2、说说CAS的ABA问题 3、说说你对AQS(抽象队列同步器)的理解 4、Java哪些地方使用了CAS 5、说说怎么保证线程安全 5、说说你了解的线程同步方式 6、说说synchronized的用法及原理 7、synchronized和Loc 阅读全文
posted @ 2023-11-14 15:35 whhhd 阅读(59) 评论(0) 推荐(0) 编辑
摘要:可能很多人都看到过一个线程数设置的理论: CPU 密集型的程序 - 核心数 + 1 I/O 密集型的程序 - 核心数 * 2 不会吧,不会吧,真的有人按照这个理论规划线程数? 线程数和 CPU 利用率的小测试 抛开一些操作系统,计算机原理不谈,说一个基本的理论(不用纠结是否严谨,只为好理解):一个 阅读全文
posted @ 2023-09-25 14:49 whhhd 阅读(1531) 评论(0) 推荐(0) 编辑
摘要:Executor框架 Executor框架 Executor 框架包含一组用于有效管理工作线程的组件。Executor API 通过 Executors(工厂类角色) 将任务的执行与要执行的实际任务解耦。其中Executors提供了用于创建线程池的静态工厂方法 1.Executor框架概述: Exe 阅读全文
posted @ 2020-12-18 17:40 whhhd 阅读(99) 评论(0) 推荐(0) 编辑
摘要:使用线程的三种方式 实现Runnable接口 实现Callable接口 继承Thread类 实现Runnable接口和Callable接口的类只能当做是一个可以在线程中执行的任务,不是真正意义上的线程,因此最后还需通过Thread类来调用。可以理解为任务是通过线程驱动并执行的 一.实现Runnabl 阅读全文
posted @ 2020-12-17 09:24 whhhd 阅读(122) 评论(0) 推荐(0) 编辑
摘要:前言: 我们之前使用线程的时候都是使用new Thread来进行线程的创建,但是这样会有一些问题。如: a. 每次new Thread新建对象性能差。b. 线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机或oom。c. 缺乏更多功能,如定时执行、定期执行、线程中断。 阅读全文
posted @ 2020-08-04 16:47 whhhd 阅读(403) 评论(0) 推荐(0) 编辑
摘要:1.定义:守护线程--也称为“服务线程”,他是后台线程,为用户线程提供公共服务,在没有用户线程服务时会自动离开。 2.优先级:守护线程的优先级比较低,用于为系统中的其他对象和线程提供服务 3.设置:通过setDaemon(true)来设置线程为守护线程,将一个用户线程设置为守护线程的方式是在线程对象 阅读全文
posted @ 2020-07-24 16:56 whhhd 阅读(284) 评论(0) 推荐(0) 编辑
摘要:线程生命周期概述: 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)5 种状态。尤其是当线程启动以后,它不可能一直"霸占"着 CPU 阅读全文
posted @ 2020-07-15 18:28 whhhd 阅读(827) 评论(0) 推荐(0) 编辑
摘要:countDownLatch: 1.概念(jdk1.5以后引入的新概念,使用计数器模式) countDownLatch这个类使一个线程等待其他线程各自执行完毕后再执行。 是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕后,计数器的值就-1,当计数器的值为0时,表示所有线程都 阅读全文
posted @ 2020-03-26 11:24 whhhd 阅读(170) 评论(0) 推荐(0) 编辑
摘要:1.线程优先级别高的一定会先执行吗? 不一定,因为线程的执行需要准备资源,而抢占资源cpu也只是给线程优先级高的多一点机会 也需等当前线程用完资源才可 2.volatile如何保证有序性 volatile关键字禁止指令重排序有两层意思: 1)当程序执行到volatile变量的读操作或者写操作时,在其 阅读全文
posted @ 2020-03-22 14:24 whhhd 阅读(97) 评论(0) 推荐(0) 编辑
摘要:一.内存模型的相关概念(高速缓存是每个线程特有的,也称本地缓存) 大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。 由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向 阅读全文
posted @ 2020-03-22 14:21 whhhd 阅读(1799) 评论(0) 推荐(0) 编辑
摘要:第一,记住wait必须要进行异常捕获,否则编译时会抛出 InterruptedException异常 第二,记住调用wait或者notify方法必须采用当前锁调用,即必须采用synchronized中的对象,否则抛出IllegalMonitorStateException 这样子为了线程同步,需要获 阅读全文
posted @ 2020-03-22 14:11 whhhd 阅读(130) 评论(0) 推荐(0) 编辑
摘要:1.程序次序规则:一个线程内,按照代码顺序,书写在前面的操作先行发生于书写在后面的操作 一段程序代码的执行在单个线程中(看起来)是有序的,因为虚拟机可能会对程序代码进行指令重排序。虽然进行重排序,但是最终执行的结果是与程序顺序执行的结果一致的,它只会对不存在数据依赖性的指令进行重排序,事实上,这个规 阅读全文
posted @ 2020-03-22 14:09 whhhd 阅读(299) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示