Java并发编程:Thread类的使用 在前面2篇文章分别讲到了线程和进程的由来、以及如何在Java中怎么创建线程和进程。今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知识:线程的几种状态、上下文切换,然后接着介绍Thread类中的方法的具体使用。 以下是本文的目录大纲 ...
分类:
其他好文 时间:
2018-05-01 00:35:24
阅读次数:
204
什么是CPU上下文切换? 现在linux是大多基于抢占式,CPU给每个任务一定的服务时间,当时间片轮转的时候,需要把当前状态保存下来,同时加载下一个任务,这个过程叫做上下文切换。时间片轮转的方式,使得多个任务利用一个CPU执行成为可能,但是保存现场和加载现场,也带来了性能消耗。 那线程上下文切换的次 ...
分类:
其他好文 时间:
2018-04-16 11:06:13
阅读次数:
198
1、 进程和线程的区别: (1) 一个进程可以有多个线程,一个进程中的多个线程共享该进程的所有资源,多线程切换比多进程切换快,因为不用上下文切换,Python中并发建议用多进程 (2) 进程是资源分配的最小单位,线程是程序执行的最小单位 (3) 进程有自己的独立地址空间,而线程是共享进程中的数据 2 ...
分类:
编程语言 时间:
2018-04-16 00:40:20
阅读次数:
193
redis快速的原因 1内存操作\ 2epoll模型 异步非阻塞io 3采用单线程,避免了不必要的上下文切换和竞态条件 客户端发出的命令是 串行执行的 也就是 数据库的最高隔离级别 串行化 redis 可以使用 watch multi/exec 做原子性命令组装 ...
分类:
编程语言 时间:
2018-04-08 10:20:15
阅读次数:
212
我们使用zabbix做了如下的监控: 1.硬件监控。 通过SNMP来进行路由器交换机的监控(这些可以跟一些厂商沟通来了解如何做)、 服务器的温度以及其他,可以通过IPMI来实现。当然如果没有硬件全都是云,直接跳过这一步骤。 2.系统监控。 如CPU的负载,上下文切换、内存使用率、磁盘读写、磁盘使用率 ...
分类:
其他好文 时间:
2018-03-27 01:58:34
阅读次数:
177
在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁 锁机制存在以下问题: (1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。 (2)一个线程持有锁会导致其它所有需要此锁的线程挂起。 (3)如果一个优先级高的线程等待一个优先级低的线 ...
分类:
编程语言 时间:
2018-03-22 22:39:15
阅读次数:
223
协成又称为微线程CPU是无法识别协程的,只能识别是线程,协成是由开发人员自己控制的。协成可以在单线程下实现并发的效果(实际计算还是串行的方式)。如果使用线程在多个函数之间进行上下文切换,那么这个上下文的逻辑位置是保存在CPU中的,而协程也有上下文切换的操作,但是协成的上下文逻辑位置不是通过CPU保存的,所以使用协成的好处就是更少的占用了CPU。线程之间修改共享数据时,需要锁;而协成不需要,因为协成
分类:
编程语言 时间:
2018-03-15 23:01:30
阅读次数:
570
Selector选择器是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件。这样使得一个单独的线程可以管理多个Channel,从而管理多个网络连接。 为什么使用Selector 对于操作系统来说,线程之间上下文切换的开销很大,而且每个线程都要占用系统的资源, ...
分类:
编程语言 时间:
2018-02-24 21:53:37
阅读次数:
159
此文简要分析一下libco协程的关键原理。 在分析前,先简单过一些协程的概念,以免有新手误读了此篇文章。 协程是用户态执行单元,它的创建,执行,上下文切换,挂起,销毁都是在用户态中完成,对linux系统而言,其实协程和进程(注:在linux系统中,进程是拥有独立地址空间的线程)一样,都是CPU的执行 ...
分类:
其他好文 时间:
2018-02-22 23:49:05
阅读次数:
320
传统解决方式: 多线程: 多线程上下文切换问题,锁问题,同步问题 c/c++手动完成:门槛较高 node基于事件的非阻塞编程 优势: 非阻塞I/O可以使CPU与I/O并不依赖,可以更大程度的利用资源 对于网络应用,并行带来的优势更大,利于分布式和云的应用 由于调用了c/c++的扩展模块,node的性 ...
分类:
其他好文 时间:
2018-02-02 14:10:01
阅读次数:
166