JUC
文章平均质量分 53
JUC学习内容
唥雨凊
一个努力学习的程序小白
展开
-
java线程状态
Java线程的六种状态NEW 初始状态,线程刚被构建,但是还没有调用start()方法RUNNABLE 运行状态,Java系统系统中将操作系统中的就绪和运行两种状态笼统地称为“运行中”BLOCKED 阻塞状态,表示线程阻塞于锁WAITTING 等待状态,表示线程进入等待状态,进入该状态表示当前线程做出一些特定动作(通知或者中断)TIME_WAITTING 超时等待状态,该状态不同于等待状态,它可以在指定的时间后自行返回TERMINATED 中止状态,表示当前线程已经执行完毕在Java中只有这六原创 2021-03-27 21:08:08 · 93 阅读 · 0 评论 -
公平锁和非公平锁-ReentrantLock是如何实现公平、非公平的
公平锁和非公平锁-ReentrantLock是如何实现公平、非公平的1、什么是公平锁与非公平锁公平锁:公平锁就是保障了多线程下各线程获取锁的顺序,先到的线程优先获取锁。非公平锁:非公平锁则无法提供这个保障(先到的线程优先获取锁)。2、ReentrantLock如何实现公平与非公平Java并发包下面的ReentrantLock、ReadWriteLock默认都是非公平模式。下面我们就来一起看看ReentrantLock是如何实现公平与非公平的。ReentrantLock实现了Lock接口。提供了转载 2021-03-31 11:44:03 · 535 阅读 · 0 评论 -
线程学习1(小白自学)
多线程学习什么是进程当我们开启一个程序的时候就会开启一个进程Win:可以直接打开任务管理器,查看进程Linux:PS kill-9在进程中至少开启一条一个线程,该线程就是主线程进程就是所有线程的集合什么是线程线程就是程序执行的路径在进程中开启一条线程执行我们的代码,程序执行的顺序必须遵循、从上往下的顺序注意:如果开启了多线程代码的执行顺序就不是从上往下的顺序什么是多线程也就是在同一个进程中,开启了多条不同的执行执行路径,每条执行路径相互不影响,同时执行多线程的好处就是提高程序的执原创 2020-09-26 16:47:35 · 180 阅读 · 0 评论 -
JUC学习:CountDownLatch,CyclicBarrier,Semaphore
CountDownLatch&CyclicBarrier从字面上理解,CountDown表示减法计数,Latch表示门闩的意思,计数为0的时候就可以打开门闩了。 CyclicBarrier表示循环的障碍物。两个类都含有这一个意思:对应的线程都完成工作之后再进行下一步动作,也就是大家都准备好之后再进行下一步。然而两者最大的区别是,进行下一步动作的动作实施者是不一样的。这里的“动作实施者”有两种,一种是主线程(即执行main函数),另一种是执行任务的其他线程,后面叫这种线程为原创 2020-11-17 21:02:39 · 179 阅读 · 0 评论 -
JUC学习:阻塞队列
阻塞队列在这篇博客中我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(LinkedList是双向链表,它实现了Dequeue接口),阻塞队列常用于线程池和生产者消费者的问题中使用非阻塞队列的时候有一个很大问题就是:它不会对当前线程产生阻塞,那么在面对类似消费者-生产者的模型时,就必须额外地实现同步策略以及线程间唤醒策略,这个实现起来就非常麻烦。一、认识BlockingQueue 阻塞队列,顾名思义,首先它是一个队列,而一个队列在数据结构中所起的作用大致如下图原创 2020-11-11 21:45:58 · 111 阅读 · 0 评论 -
JUC学习:函数式接口
JUC学习:函数式接口jdk1.8 内置的函数式接口放在包 java.util.function 下,这种接口我个人感觉就是为了lambdas表达式简化代码而实现的。这些接口,主要分4大类:Consumer(类似于消费者需要传入参数无返回值)Supplier(类似于生产者不需要传入参数,但有返回值)Function(有输入也有返回)Predicate(判断函数,有输入也有返回,返回true or false)他们特点如下:接口参数类型返回类型方法用途Consum原创 2020-11-10 21:37:02 · 140 阅读 · 0 评论 -
反射的学习
反射一、概述1、概念反射就是把Java的各种成分映射成相应的Java类。Class类的构造方法是private,由JVM创建。反射是java语言的一个特性,它允程序在运行时(注意不是编译的时候)来进行自我检查并且对内部的成员进行操作。例如它允许一个java的类获取他所有的成员变量和方法并且显示出来。Java 的这一能力在实际应用中也许用得不是很多,但是在其它的程序设计语言中根本就不存在这一特性。例如,Pascal、C 或者 C++ 中就没有办法在程序中获得函数定义相关的信息。(来自Sun)J原创 2020-11-10 16:46:46 · 186 阅读 · 0 评论 -
JUC学习:单例模式
单例模式学习Java中单例(Singleton)模式是一种广泛使用的设计模式。单例模式的主要作用是保证在Java程序中,某个类只有一个实例存在。一些管理器和控制器常被设计成单例模式。 单例模式有很多好处,单例模式保证了 系统内存中该类只存在一个对象,节省了系统资源,对于一些需要频繁创建销毁的对象,使用单例模式可以提高系统性能当想实例化一个单例类的时候,必须要记住使用相应的获取对象的方法,而不是使用 new单例模式 使用的场景:需要 频繁的进行创建和销毁的对象、创建对象时耗时过多或耗费资原创 2020-11-09 21:40:39 · 109 阅读 · 0 评论 -
JUC学习:synchronized
synchronized的学习参考:https://mp.weixin.qq.com/s?__biz=MzAwNDA2OTM1Ng==&mid=2453142528&idx=1&sn=34b26e408e1f8adcd8d8257522705171&scene=21#wechat_redirectsynchronized关键字最主要的三种使用方式的总结修饰实例方法,作用于当前对象实例加锁,进入同步代码前要获得当前对象实例的锁修饰静态方法,作用于当前类对象加原创 2020-11-08 20:49:00 · 262 阅读 · 0 评论 -
JUC学习:什么是线程安全
什么是线程安全?其实线程安全指的也就是内存安全,操作系统里面会有很多进程,为了保证安全,操作系统会为这些进程分配各自的内存,每个进程就只能访问自己的那部分内存,而这个内存就叫堆内存。但每个进程里面可能又有许多的线程,为了安全也会为它们分配一个自己的内存,这个内存就叫栈内存。而现实场景中不可能每个线程都只访问栈内存,有部分变量就需要放到一个公共空间里面,但如何保证这个公共空间资源的安全呢?解决方案以下几种,局部变量直接放到每个线程的栈内存中就是资源复制多几份给每个线程都能分到一份一样的资源,原创 2020-11-08 20:02:06 · 247 阅读 · 0 评论 -
JUC学习:Volatile
这里我看了:这篇blog总结了一下知识点,上面讲的已经很全面了,我这就花了个图对它进行总结,也算是对这个知识点的一个记录原创 2020-11-06 22:10:48 · 78 阅读 · 0 评论 -
JUC学习:ThreadLocal
ThreadLocal的学习ThreadLocal简介通常情况下,我们创建的变量是可以被任何一个线程访问并修改的。如果想实现每一个线程都有自己的专属本地变量该如何解决呢? JDK中提供的ThreadLocal类正是为了解决这样的问题。 ThreadLocal类主要解决的就是让每个线程绑定自己的值,可以将ThreadLocal类形象的比喻成存放数据的盒子,盒子中可以存储每个线程的私有数据。如果你创建了一个ThreadLocal变量,那么访问这个变量的每个线程都会有这个变量的本地副本,这也是Thread原创 2020-11-05 14:33:59 · 252 阅读 · 0 评论 -
JUC学习:java中的各种锁详细介绍
java中的各种锁详细介绍转自:https://www.cnblogs.com/jyroy/p/11365935.html ,我在网上看到了一篇很好的blog来介绍锁的相关内容,在这记录下来以供后面自己学习Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分组归类,再使用对比的方转载 2020-11-01 15:00:34 · 361 阅读 · 0 评论 -
JUC学习:线程池
java线程池学习线程池原理的简单理解线程池原理和银行办理业务差不多线程池就像银行,有需求的时候给你安排窗口办理业务,人数多了就去等待队列去等待,如果哪个窗口的人办理完业务了,等待队列里面的人就会选择该窗口进行业务办理,(有空闲窗口就会从等待队列里面选取,不会直接从外面选取)如果等到队列都满了,还有人要办理业务,就会额外开一些窗口来继续办理业务,如果全部窗口都打开了,等待队伍也满了,还有需求需要办理的话,就会执行拒绝策略,拒绝后面的需求,并执行相应的策略开放的窗口1,2,3相当于核心线程池数量,最大原创 2020-09-22 16:50:10 · 161 阅读 · 0 评论