简介 使用Selector(选择器), 可以使用一个线程处理多个客户端连接。 Selector 能够检测多个注册的通道上是否有事件发生(多个Channel以事件的方式可以注册到同一个Selector), 如果有事件发生, 便获取事件然后针对每个事件进行相应的处理。这样就可以只用一个单线程去管理多个通 ...
分类:
其他好文 时间:
2019-12-08 12:24:17
阅读次数:
113
Nginx核心功能:Web服务器,代理服务器以及邮件服务器; Nginx的基本架构 Nginx的工作模式:一主(Master process)N从(Work Process),即Master Slaver模式Nginx和Apache都是进程处理请求,IIS是线程处理,可以获得比较好的性能,还是还是需 ...
分类:
其他好文 时间:
2019-12-06 14:01:11
阅读次数:
72
tomcat线程优化 tomcat线程池在tomcat服务中每一个用户请求都是一个线程,所以可以使用线程池来提高性能。1、线程池是什么?线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后创建线程后自动启动这些任务,线程池线程都是后台线程。每个线程都使用默认的堆栈大小。它由线程池管理器,工作 ...
分类:
编程语言 时间:
2019-11-25 14:56:20
阅读次数:
83
代码思路 将要处理的数据放到ConcurrentQueue中,然后开启多个线程去处理数据,处理完成后,再到队列中获取下一个待处理数据。 ConcurrentQueue 表示线程安全的先进先出 (FIFO) 集合,属于 System.Collections.Concurrent 命名空间下的一个数据结 ...
分类:
编程语言 时间:
2019-11-24 17:20:11
阅读次数:
544
synchronized处理线程wait() 和notifyAll() 时,同步代码块中不要包含Thread.sleep(5)语句: 结果花费1.6s; 花费时间11.2s; 测试调用代码: 当synchronized同步代码块中去掉Thread.sleep(5)时,结果一致,都是1.6s左右。 ...
分类:
移动开发 时间:
2019-11-13 17:57:46
阅读次数:
87
1、原理介绍: 使用interrupt来通知,而不是强制。 在Java中,最好的停止线程的方式是使用中断 Interrupt,但是这仅仅是会通知到被终止的线程“你该停止运行了”,被终止的线程自身拥有决定权(决定是否、以及何时停止),这依赖于请求停止方和被停止方都遵守一种约定好的编码规范。 任务和线程 ...
分类:
编程语言 时间:
2019-11-10 17:17:21
阅读次数:
72
MYSQL 服务器逻辑架构图 连接/线程处理 == 》 (解析器 –> 查询缓存) 》 优化器 》 存储引擎 服务器级别锁MYSQL 使用的锁类型:表锁(显式:LOCK TABLE,隐式)全局锁(read_only=1,FLUSH TABLE WITH READ LOCK)命名锁 :服务器重命名或者 ...
分类:
数据库 时间:
2019-11-07 09:30:42
阅读次数:
133
一、 Redis为什么是单线程 注意:redis 单线程指的是网络请求模块使用了一个线程,即一个线程处理所有网络请求,其他模块仍用了多个线程。 因为CPU不是Redis的瓶颈。Redis的瓶颈最有可能是机器内存或者网络带宽,既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理成章地采用单线程的方案了 ...
分类:
编程语言 时间:
2019-11-05 15:02:38
阅读次数:
74
线程池,简单来说就是有一堆已经创建好的线程(最大数目一定),初始时他们都处于空闲状态,当有新的任务进来,从线程池中取出一个空闲的线程处理任务,然后当任务处理完成之后,该线程被重新放回到线程池中,供其他的任务使用,当线程池中的线程都在处理任务时,就没有空闲线程供使用,此时,若有新的任务产生,只能等待线 ...
分类:
编程语言 时间:
2019-11-03 23:37:59
阅读次数:
91
在python中经常会到用多线程处理某个函数来缩短运行时间,但通常multiprocessing.Pool的map函数只接受一个可迭代参数。 运行上面的程序就会多线程处理并打印出输入x的计算结果。 但是这个函数仅允许函数的输入变量为1,如果函数需要多个参数输入,那个就无法用上面的程序。比如: 当附加 ...
分类:
编程语言 时间:
2019-11-01 12:55:17
阅读次数:
825