
多线程
沐雨金鳞
大行不顾细谨
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
多线程使用MultipartFile上传excel文件报错
实验室项目中有一个文件上传的功能,因为之前我使用的new Thread来做的,线程不好管理,所以我改用了ThreadPoolExecutor来做,没想到出现了如下问题:原因:然后我从网上看了很多方式,无非这么几种解决方案:1、修改配置,指定临时文件存储路径 2、 修改multipart的最大文件大小,当文件数大于该值时,就不会有临时文件产生上面两种方法对我均无效!最终的解决方案是:InputStream is = file.getInputStream();...原创 2021-02-18 20:39:24 · 1927 阅读 · 0 评论 -
Java天生就是多线程程序
import java.lang.management.ManagementFactory;import java.lang.management.ThreadInfo;import java.lang.management.ThreadMXBean;class Solution { public static void main(String[] args) { // 获取java线程管理的MXBean ThreadMXBean threadMXBean.原创 2021-01-11 21:15:13 · 246 阅读 · 0 评论 -
指令重排序
原创 2021-01-11 21:15:28 · 222 阅读 · 0 评论 -
volatile原理
原创 2021-01-11 21:15:44 · 275 阅读 · 0 评论 -
限流算法
计数器法:无法限制短时间的正常并发请求,无法限制短时间的超额请求 滑动窗口法:无法限制短时间的正常并发请求,可以限制短时间的超额请求 漏桶法:不管请求来的多快,让请求按相同速率请求出去 令牌桶算法:令牌按一定速率放进令牌桶,请求来,拿到就执行,拿不到就抛弃 计算器法一个counter值,每来一个请求counter++ 当一个请求到来时,计算他与第一个请求的时间间隔,如果没超过1分钟,并且counter已经为100,则抛弃该请求 当一个请求到来时,如果他与第...原创 2020-11-27 20:04:56 · 324 阅读 · 0 评论 -
Tomcat Connector(BIO, NIO, APR)三种运行模式
Tomcat支持三种接收请求的处理方式:BIO、NIO、APR 。BIO 阻塞式I/O操作即使用的是传统 I/O操作,Tomcat7以下版本默认情况下是以BIO模式运行的,由于每个请求都要创建一个线程来处理,线程开销较大,不能处理高并发的场景,在三种模式中性能也最低。配置如下(tomcat安装目录下的/conf/server.xml):<Connector port="8080" protocol="HTTP/1.1" connectionTimeout转载 2020-10-10 20:11:15 · 331 阅读 · 0 评论 -
H2O 生成
H2O 生成下面这道题真的难到我了,看了解析后是用信号量机制去做了,看了半天看明白(平时没写过信号量????)下面的信号量机制保证了O和H在资源获取不到时,去获取资源,在资源释放不掉时,就去释放资源h.acquire(); // 获取一个H资源 o.release(); // 释放一个O资源 o.acquire(2); // 获取两个O资源(这里容易理解错,并不是获取两个O,这里是保证一次只能有一个进程执行O,看输出) h.release(2); // 释放两个H资源上面的所以四个,原创 2020-08-07 16:13:48 · 746 阅读 · 1 评论 -
打印零与奇偶数
打印零与奇偶数class ZeroEvenOdd { private int n; private volatile int i = 0; private volatile int sign = 1; public ZeroEvenOdd(int n) { this.n = n; } // printNumber.accept(x) outputs "x", where x is an integer. public v原创 2020-08-07 16:05:37 · 312 阅读 · 0 评论 -
交替打印FooBar
交替打印FooBarclass FooBar { private int n; private int i = 0; public FooBar(int n) { this.n = n; } public void foo(Runnable printFoo) throws InterruptedException { synchronized (this){ while(i < n *原创 2020-08-07 16:04:26 · 375 阅读 · 0 评论 -
按序打印
按序打印一开始这样写的,错了,大家知道为什么吗?class Foo { private int volatile n = 0; public Foo() { } public void first(Runnable printFirst) throws InterruptedException { synchronized (this){ if(n % 3 == 0){ // pri原创 2020-08-07 16:02:18 · 314 阅读 · 1 评论 -
哲学家进餐
哲学家进餐这道题其实考的是死锁,死锁产生的四个条件:1、互斥2、占有并等待3、不可抢占4、循环等待可以直接让一个人去吃,吃完释放,其他人再去吃也可以,就是速度会慢: synchronized (this){ pickLeftFork.run(); pickRightFork.run(); eat.run(); putLeftFork.run();原创 2020-08-07 15:42:32 · 263 阅读 · 0 评论 -
多线程轮流交替执行三种实现方法
第一种方法:采用公平锁实现思路及其简单:A线程拿到锁,执行代码 B线程拿到锁,执行代码 A线程拿到锁,执行代码 ......public class FairLockDemo { public static void main(String[] args) { Runnable target = new Runnable(){ int i = 10; // 利用公平锁 private R原创 2020-07-01 09:12:33 · 4211 阅读 · 0 评论