聊一聊java线程
文章平均质量分 91
讲述一下java线程,线程池,并发等知识点
笔下天地宽
能不凑合就不凑合!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
瞅一瞅JUC提供的限流工具Semaphore
微服务架构发展到今天,各个服务之前的调用、接口请求越来越频繁,服务器承受的压力自然也越来越大。如果放任所有请求请求到服务器,不管是服务器也好还是数据也好,都可能被因为无法承受大批量的请求而阻塞、宕机甚至是GG,尤其是一些查询接口请求特别频繁的情况下,是需要对请求进行一定限制的。 譬如:钉钉打卡数据,动辄几十上百万数据,这种数据一秒钟来个几百次请求,钉钉估计也够呛,调用频率肯定有限制。一些支付流水,对账单也是这个原理,在请求方面都有一些限制。 还有,服务接口限制,频繁点击提示亦或是原创 2022-07-05 11:37:25 · 497 阅读 · 0 评论 -
细看一下AQS中Condition的源码
单刀直入,今天就是想说一下ConditionObject源码,闲话不多说。ConditionObject这个单词看着可能有点陌生,不过Condition你总熟悉了吧?在ReentrantLock中,一般都是使用condition.await(),condition.signal()来实现锁的等待唤醒机制。没有作用,强行逻辑的代码都是耍流氓!...原创 2021-02-02 14:12:12 · 413 阅读 · 3 评论 -
简单了解Java线程Thread
之前的文章中,提到了线程的一个关键方法join,以及Thread的线程状态,这些都是Thread代码中的内容,今天,我们再来看一看Thread。原创 2020-11-24 17:02:03 · 186 阅读 · 0 评论 -
ThreadLocal源码分析---相同线程数据共享,不同线程数据隔离
本来是想说下java中的Thread的,毕竟之前就写了join和Thread的状态,本来想把下面的也说了,不过碰到了一只拦路虎ThreadLocal,两者有许多关联,为了彻底搞清楚Thread,还是要先说一说ThreadLocal,所以又回到了这里。 ThreadLocal 大家应该都有些熟悉,刚刚开始熟悉java的时候,大伙往数据库里面写数据,需要创建数据库连接,不知道大家当时有没有遇到过连接被占用的问题,\(^o^)/~,查资料之后才知道要使用ThreadLocal,当然,现在...原创 2020-11-17 16:03:55 · 944 阅读 · 1 评论 -
对比java线程Thread,闲聊线程状态
我们知道,线程的生命周期分为5种生命状态:新建,就绪(可运行),运行,等待,死亡,这些状态几乎是所有线程都必然会经历的。之前一次面试,一个面试官问我,java的线程类Thread,有几种状态?5种啊!面试官笑了笑。。反正那次面试没过。虽然感觉自己回答的没问题,回来还是查了下,曰!Thread的线程状态是TMD的6种,当时就有一种感觉,这是被降维打击了么,还没明白题目的意思,就被直接KO!后来仔细对比了下线程状态,在这里说一说。线程的生命周期:1.新建(new):新创建一个线程对象。类似new T原创 2020-10-28 18:16:16 · 222 阅读 · 0 评论 -
线程闲聊——java代码实现一个死锁
一说到死锁,大家都有一种认识,死锁就是一种相互争抢资源,导致程序运行不下去了。线程死锁总感觉了解一些,但真让自己说明白点的时候,又不知道从那说了,有时候面试官还会让你写一个死锁,写死锁你肯定明白,只是贸然去写好像又不知道从哪里开始,今天我们就来写一个死锁,让程序死机,哈哈1.使用Synchronized实现package com.example.demoproject;public class DeadThread implements Runnable{ private Objec原创 2020-10-17 22:26:12 · 353 阅读 · 1 评论 -
谈谈对java线程的理解(六)--------ReentrantLock之锁释放+部分图解
前面讲了非公平锁的获取,公平锁的话没有说,其实公平锁和非公平锁的区别就是一个抢占的问题,如果是公平锁的话,不会上来就进行抢占锁的操作,而是要先判断一下,来看下代码if (c == 0) { if (!hasQueuedPredecessors() && compareAndSetState(0, acquires)) { setExclusiveOwnerThread(current); ...原创 2020-10-10 15:44:37 · 370 阅读 · 0 评论 -
谈谈对java线程的理解(五)--------ReentrantLock之阻塞队列
接着上一章继续说,上次我们讲到了一个关键字段waitStatus,这个字段对队列的管理很重要。我们下面来详细说一下。上一章也说了,每个队列的节点都有自己的状态,方便更好的利用资源和管理队列,Node节点其实是对等待线程的一个装,其中包含了线程的信息以及等待状态 ,如是否被阻塞、是否等待、是否需要删除等等,这个状态的控制就是交给waitStatus的,下面先说下waitStatus。waitStatuswaitStatus共有5个值,CANCELLED、SIGNAL、CONDITION、PROPAGA..原创 2020-10-09 18:36:59 · 686 阅读 · 1 评论 -
谈谈对java线程的理解(四)--------ReentrantLock锁
关于java中的锁,大家想必十分熟悉。提到锁,大家都会想到,哦,synchronized,wait,sleep,lock,notify 等等等等。当然对一些老鸟来说,这这些关键字或者方法,类都有一定的了解。对于一些新手来说可能只是处于那种不上不下,提到了,知道这么个东西,知道可以防止并发问题。说一个不太好笑的笑话,之前关于锁,我的理解就是synchronized,lock可以加锁,解锁,lock需要自己控制,二synchronized不需要,如果有人问我wait()可以用在lock中么?恐怕我的第一反应原创 2020-09-25 14:55:07 · 244 阅读 · 0 评论 -
谈谈对java线程的理解(三)--------关键字synchronized
关键字synchronized原创 2020-08-16 18:49:05 · 206 阅读 · 0 评论 -
谈谈对java线程的理解(二)--------关键字join
好了,上一篇我们已经初步了解了线程的创建与运行,那么下面我们来说说关键字 join稍微熟悉java线程的伙伴都知道,Synchronized可以加锁,防止多线程对资源的抢占,提高数据的安全性等等。当然提起Synchronized,大家可能还会想起join ,wait,notify等等。我们先说下提下join吧,这个单词大家都熟悉,意思是 成为…的一员; 参加; 加入;。我们来看一个程序。package com.example.thread;public class MyThreadPo原创 2020-08-10 22:51:00 · 230 阅读 · 0 评论 -
谈谈对java线程的理解(一)--------线程的创建与启动
最近温习了下线程的相关知识点,在这里和大家分享下。刚开始接触java的伙伴,可能对线程什么的比较迷糊,茫茫然死记硬背了一点,其中的知识总是感觉晕晕乎乎,好像懂了又好像没懂。想要理解java线程的知识点,首先要明白进程与线程的含义,下面是摘抄的线程与进程的说明。进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是.原创 2020-07-09 21:57:44 · 289 阅读 · 0 评论
分享