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