Java多线程
healing9707
等到风景都看透,也许你会陪我看细水长流。
展开
-
synchronized关键字
synchronized关键字线程安全的解决方案还有Synchronized,提供了线程同步的方式Synchronized的使用方式关键字可以修饰方法或者代码块,确保多个线程在同一时刻,只能有一个线程处理方法或者是同步块,保证线程对访问变量的可见性,有序性,原子性1.修饰普通方法 //修饰普通方法 public synchronized void add() { ...原创 2020-05-05 20:53:50 · 205 阅读 · 0 评论 -
线程池详解
线程池详解为什么要使用线程池呢?线程池属于对象池,所有线程池都有一个非常重要的共性,就是为了最大程度的复用对象,因此,线程池最重要的特征就是利用线程。其次,java线程池的编程模型相对于原有的多线程模式来说,还有一大改进,那就是线程代码和业务代码的分离。常用的线程池有几种?newSingleThreadExecutor:单线程化的线程池newCachedThreadPool:可缓存线程...原创 2020-03-25 16:47:37 · 144 阅读 · 0 评论 -
整理了这么久,终于把多线程面试搞定了!
1.Java面试中常被问到的进程与线程你知道多少呢?2.并发和并行的区别3.Java多线程《一》4.Java多线程《二》5.线程池详解6.在多线程下,如果对一个数进行叠加,该怎么做?7.ReentrantLock你知道多少呢?8.ReentrantLock源码分析9.volatile关键字10.线程池的实现11.生产者消费者模型12.ConcurrentHashM...原创 2020-04-26 17:35:29 · 872 阅读 · 0 评论 -
死锁详解
死锁的介绍目录死锁的介绍1.什么是死锁死锁是指两个或者两个以上的进程(线程)在执行的过程中,由于竞争资源而造成的阻塞问题,若无外力的作用下会无法继续推进,此时系统称之为死锁状态2.死锁的形成如图所示:将设存在两个线程SetThread和GetThread,现在SetThread持有了ObjectA资源请求资源ObjectB。GetThread持有了ObjectB资源...原创 2020-04-26 17:34:04 · 208 阅读 · 0 评论 -
ConcurrentHashMap详解
ConcurrentHashMap详解HashTable和Vector是线程安全的(本质是Synchronized),其他的集合(ArrayList…)是通过Collections.synchronized*()系列的方法来实现线程安全操作,JDK1.5后提供了线程安全的容器,在Java.util.concurrent包路径下通过继承图可知,线程安全的类在ConcurrentMap接口下,该...原创 2020-04-26 17:09:53 · 2839 阅读 · 0 评论 -
生产者消费者模型
生产者消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一存储空间,生产者向空间里生产数据,而消费者取走数据。 由于程序运行是线程不安全的,因此可能会出现以下问题: 1、假设生产者线程刚向数据存储空间添加了数据的名称,还没有加入该信息的内容,程序就切换到了消费者线程,消费者线程将把信息的名称和上一个信息的内容联系在一起; 2、生产者生产了若干次数据,消费者才开始取数据,或者是,消费者取完一次数据后,还没等生产者放入新的数据,又重复取出了已取过原创 2020-03-20 17:46:07 · 124 阅读 · 0 评论 -
线程调度之用户级调度和系统级调度
用户级调度可以提供的调度方式:调整线程优先级:Java线程有优先级,优先级高的线程获得较多的运行机会(运行时间);static int Max_priority 线程可以具有的最高优先级,值为10;static int MIN_PRIORIYT 线程可以具有的最低优先级,值为1;static int NORM_PRIORITY 分配给线程的默认优先级,值为5;Thread类的setP...原创 2020-04-26 16:48:52 · 685 阅读 · 0 评论 -
Java面试中常被问到的进程与线程你知道多少呢?
1.进程和线程的概念进程是计算机上正在执行的一个独立的应用程序,进程是一个动态概念,必须是进行状态。如果一个应用程序没有启动,那就不是进程:进程是资源的分配的基本单位(内存、进程ID(PID))线程是组成进程的基本单位,可以完成特定的功能,一个进程是有一个后者多个线程组成的:线程是资源调度的单位2.进程和线程的区别内从空间的区别:进程有独立的内存空间,每个进程之间都是相互独立的。线程...原创 2020-04-26 16:41:43 · 195 阅读 · 0 评论 -
并发和并行的区别
首先我们需要知道,并发和并行都是CPU的手段1.并发是指多个任务在一个时间段呢重复的执行的结构设计运行起来的程序 .exeCPU快速切换给我们产生的同事执行的错觉2.并行真正的同时进行...原创 2020-04-26 16:31:39 · 142 阅读 · 0 评论 -
ReentrantLock你知道多少呢?
1、公平性锁和非公平性锁非公平性:如果一个线程因为CPU时间全部被其他的线程抢走而无法获得CPU的执行时间,这种状态称之为饥饿,而该线程被称为“饥饿致死”,非公平锁就存在“饥饿”,因为线程得不到CPU的运行时间机会。公平性:所有的线程均能公平性的获取到执行的机会2、Java的线程饥饿原因:1、高优先级的线程抢夺所有的低优先级的线程CPU时间2、线程被永久阻塞在一个等待进入同步块的状态3...原创 2020-04-23 11:24:01 · 161 阅读 · 0 评论 -
ReentrantLock源码分析
ReentrantLock的源码分析abstract static class Sync extends AbstractQueuedSynchronizerstatic final class FairSync extends Syncstatic final class NonfairSync extends SyncReentrantLock具体实现委托给内部类(Sync、FairS...原创 2020-04-23 11:36:34 · 172 阅读 · 0 评论 -
Java多线程《二》
Java多线程《二》1.线程的生命周期线程包括哪些状态的问题说专业一点就是线程的生命周期。不同的编程语言对线程的生命周期封装是不同的。2.Java 中线程的生命周期(Java 语言中线程共有六种状态。)NEW(初始化状态)RUNNABLE(可运行 / 运行状态)BLOCKED(阻塞状态)WAITING(无限时等待)TIMED_WAITING(有限时等待)TERMINATED(...原创 2020-04-05 00:57:59 · 140 阅读 · 0 评论 -
Java多线程《一》
1.进程程序执行时的一个实例每个进程都有独立的内存地址空间系统进行资源分配和调度的基本单位进程里的堆,是一个进程中最大的一块内存,被进程中的所有线程共享的,进程创建时分配,主要存放 new 创建的对象实例进程里的方法区,是用来存放进程中的代码片段的,是线程共享的在多线程 OS 中,进程不是一个可执行的实体,即一个进程至少创建一个线程去执行代码2.为什么要有线程?每个进程都有自己...原创 2020-04-05 00:45:21 · 137 阅读 · 0 评论