随笔分类 - [Java]:Thread/Lock
摘要:可以使用 JMeter 辅助测试 https://blog.csdn.net/weixin_45014379/article/details/124190381 @RestController @RequestMapping({"/Test"}) public class test { Logger
阅读全文
摘要:先抛出一个问题,如何解决互联网项目中的高并发问题? 1.网络层 2.服务器层面,常用的有nginx分流,负载均衡,负载权重。这些就是为了减轻单台服务器的压力。 3.业务划分 这才是高并发解决方案的重点,系统应该被细粒度地分割成多个模块,如天猫的购物车系统、结算系统等,在具体划分出来的系统上做负载均衡
阅读全文
摘要:作者:知乎用户链接:https://www.zhihu.com/question/586093481/answer/2917191929来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 实现一个基于Semaphore的限流器,可以按照以下步骤进行: 1.创建Semaph
阅读全文
摘要:Semaphore(信号量)为多线程协作提供了更为强大的控制方法,前面的文章中我们学了synchronized和重入锁ReentrantLock,这2种锁一次都只能允许一个线程访问一个资源,而信号量可以控制有多少个线程可以同时访问特定的资源。 Semaphore常用场景:限流 举个例子: 比如有个停
阅读全文
摘要:本章对ReentrantLock包进行基本介绍,这一章主要对ReentrantLock进行概括性的介绍,内容包括:ReentrantLock介绍ReentrantLock函数列表ReentrantLock示例在后面的两章,会分别介绍ReentrantLock的两个子类(公平锁和非公平锁)的实现原理。
阅读全文
摘要:1. JUC 简介 在 Java 5.0 提供了 java.util.concurrent(简称JUC)包,在此包中增加了在并发编程中很常用的工具类,用于定义类似于线程的自定义子系统,包括线程池,异步 IO 和轻量级任务框架;还提供了设计用于多线程上下文中的 Collection 实现等; 2. v
阅读全文
摘要:1、如何使用jstack分析线程状态 https://www.cnblogs.com/silentdoer/p/11736498.html 2、top命令查看进程下线程信息以及jstack的使用 https://www.cnblogs.com/heyanan/p/9261695.html jstac
阅读全文
摘要:join主要为让多线程按顺序执行 源码:wait-notify-synchronized public class Thread008 implements Runnable{ public static void main(String[] args){ //主线程调用t1.join 主线程阻塞且
阅读全文
摘要:1、wait 使用说明 public class Thread001 { class Res{ public String userName; private char sex; private boolean flag; } class InputThread extends Thread{ Re
阅读全文
摘要:当前线程变为阻塞(释锁) 放弃CPU执行 在同步代码块中使用且必须要通过对象.wait(this.wait) 释锁目的: 生产者写数据,防死锁 public class Thread002 { public static void main(String[] args) { new Thread00
阅读全文
摘要:public class Thread001 { class Res{ public String userName; private char sex; } class InputThread extends Thread{ Res res; public InputThread(Res res)
阅读全文
摘要:public class Thread001 { class Res{ public String userName; private char sex; } class InputThread extends Thread{ Res res; public InputThread(Res res)
阅读全文
摘要:Synchronized自动 关键字,完毕或异常后自动释放 Lock(aqs) 手动 获、释锁 public class TickerThread4 implements Runnable { private int count=100; private Lock lock=new Reentran
阅读全文
摘要:多程,互需锁不释放 同时窗口1:先object锁,再this锁,票数-1窗口2:先this锁,再object锁,票数-1 public class TickerThread3 implements Runnable { private static int count=100; private Bo
阅读全文
摘要:两者区别: 1.首先synchronized是java内置关键字,在jvm层面,Lock是个java类; 2.synchronized无法判断是否获取锁的状态,Lock可以判断是否获取到锁; 3.synchronized会自动释放锁(a 线程执行完同步代码会释放锁 ;b 线程执行过程中发生异常会释放
阅读全文
摘要:两者区别: 1.首先synchronized是java内置关键字,在jvm层面,Lock是个java类; 2.synchronized无法判断是否获取锁的状态,Lock可以判断是否获取到锁; 3.synchronized会自动释放锁(a 线程执行完同步代码会释放锁 ;b 线程执行过程中发生异常会释放
阅读全文
摘要:11、 Synchronized使用方式代码块形式1)、使用到Synchronized锁:任务对象锁2)、方法(非静态)默认this锁3)、方法(静态),当前类Class字节码锁 i)、this或object public class TickerThread implements Runnable
阅读全文
摘要:第1章 多线程 1.1 多线程介绍 学习多线程之前,我们先要了解几个关于多线程有关的概念。 进程:进程指正在运行的程序。确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能。 线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有
阅读全文