本月博客排行
-
第1名
龙儿筝 -
第2名
lerf -
第3名
fantaxy025025 - johnsmith9th
- xiangjie88
- zysnba
年度博客排行
-
第1名
青否云后端云 -
第2名
宏天软件 -
第3名
gashero - wy_19921005
- vipbooks
- benladeng5225
- e_e
- wallimn
- javashop
- ranbuijj
- fantaxy025025
- jickcai
- gengyun12
- zw7534313
- qepwqnp
- 解宜然
- ssydxa219
- zysnba
- sam123456gz
- sichunli_030
- arpenker
- tanling8334
- gaojingsong
- kaizi1992
- xpenxpen
- 龙儿筝
- jh108020
- wiseboyloves
- ganxueyun
- xyuma
- xiangjie88
- wangchen.ily
- Jameslyy
- luxurioust
- lemonhandsome
- mengjichen
- jbosscn
- zxq_2017
- lzyfn123
- nychen2000
- forestqqqq
- wjianwei666
- ajinn
- zhanjia
- siemens800
- Xeden
- hanbaohong
- java-007
- 喧嚣求静
- mwhgJava
最新文章列表
Semaphore线程并发
Semaphore 信号量-多线程:限制线程并发的数量
//过独木桥
public class GBridge {
private Semaphore sem = new Semaphore(1);
//只有一个线程能调用该方法
public void come(){
try{
sem.acquire();
System.out.println(Thread.curre ...
CyclicBarrier 源码分析
简介:
CyclicBarrier 实现这么一个功能,比如说吃饭,是不是要等所有人到齐了才能开始吃?CyclicBarrier 就实现了这么一个功能. 所有的线程都互相等待着,等所有的线程到达后,然后执行. CyclicBarrier 还可以实现这么一个功能,当所有人(线程)到齐后,可以先叫服务员上菜,然后所有人再开始吃.
实现原理:
使用 ReentrantLock.condition 实现的 ...
FutureTask WaitNode 源码分析
waiter 存放等待的线程,这是一个单链表,没有用 lock 或者 sync 但是实现了线程安全.
static final class WaitNode {
// 记录当前线程.
volatile Thread thread;
// 指向下一个线程.
volatile WaitNode next;
WaitNode ...
Guava对Future的支持(回调)
//1.使用Callable返回执行结果(获取返回值get()是阻塞方法)
public class FutureTest {
public static void main(String[] args) throws Exception{
FutureTask<String> future = new FutureTask<String>(new CallableTa ...
Runtime的addShutdownHook方法可用于线程池的关闭
//Runtime的addShutdownHook方法可用于线程池的关闭
//打开jconsole,可看见主线程和子线程tt;
//打印的日志可以看出addShutdownHook方法里的线程在主线程结束后开始执行
public class RuntimeTest {
public static void main(String[] args) {
System.out.println(& ...
多线程-使用CyclicBarrier达到join的效果
//多线程-使用CyclicBarrier达到join的效果
public class JoinTest {
public static void main(String[] args) {
int threadNum = 20;
CyclicBarrier barrier=new CyclicBarrier(threadNum, new PrintThread());
for(i ...
多线程-使用CountDownLatch达到join的效果
public class ThreadTest {
private static final CountDownLatch ctl = new CountDownLatch(10);
public static void main(String[] args) throws Exception{
System.out.println("主线程执行前:"+Thread.c ...
异步导入
在网上找了很多资料,导入五花八门。由于我参与到导入功能是从架构层面上做优化,解决大数据量,并发,耗时等性能问题。
我先出了方案文档如下
导出统一用异步实现提高用户体验,导出分页标准根据各自的也无需求定(全量导出不仅性能低,数据量特别大的情况下还会导致内存溢出)。
异步导出页面设计如下:
导出时间,表格名称,导出状态(导出中,导出完成,导出异常),导出进度条,操作(下载)
异步导出针对文件加 ...
自己开发的在线视频下载工具,基于Java多线程
比如这个在线视频:
我们可以正常播放,但是找不到下载按钮。
打开Chrome开发者工具,在Network标签页里能看到很多网络传输请求:
随便看一个请求的响应,发现类型为video,大小为500多k。因此,这个在线视频被拆分成了若干500多k的小片段,然后通过浏览器下载到本地进行播放。
这个片段的url:
基于多线程的全局变量
def current_nation
default_nation = (current_contact && current_contact&.company&.country) ? current_contact&.company&.country : "United States"
cookie ...
C#多线程
C#多线程学习(一) 多线程的相关概念
什么是进程?当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个线程所组成的。什么是线程?线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。什么是多线程?多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多 ...
es多线程调用,线程阻塞超时RuntimeException
最近做多职位简历召回时,使用多线程进行es数据召回,发现每次es召回的时间大概在1000ms,甚至导致RuntimeException。linux机器cpu核数等于8
一、分析原因
1、单线程进行es数据召回,耗时30ms左右,猜猜是由于多线程导致的
2、切回线程池多线程执行es数据召回,每条数据耗时1000ms左右,此时线程池配置如下:
private ...
Java的多线程
1,线程的状态转换:
新建,可运行,运行中,阻塞(等待锁),等待(不确定的等待和指定时间的等待),结束。
线程的join方法和yield方法;
join方法:
线程A中调用线程B的join方法,则线程A将会等待线程B运行结束之后再继续运行。
yield方法:
线程调用yield方法,则是让当前正在运行的线程,把CPU时间片让给相同优先级的其他线程去运行。
...