并发编程
xiaojia_wahaha_
这个作者很懒,什么都没留下…
展开
-
多线程一定快吗?
不一定,当并发执行累加操作不超过百万次时,速度会比串行执行累加操作要慢,因为线程有创建和上下文切换的开销。时间片:CPU分配给各个线程的时间,时间片一般是几十毫秒,因为时间片非常短,所以CPU通过不停切换线程执行,让我们感觉是同时执行的。上下文切换:CPU通过时间片算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务。但是,在切换前会保存上一个任务的状态,以便下次切换回这个任务时原创 2018-01-16 18:24:03 · 1233 阅读 · 0 评论 -
避免死锁的常见方法
1.避免一个线程同时获取多个锁;2.避免一个线程在锁内同时占用多个资源,尽量保证每个锁只占用一个资源;3.尝试使用定时锁,使用lock.try-lock(timeout)来替代使用内部锁机制;4.对于数据库锁,加锁和解锁必须在一个数据库链接里,否则会出现解锁失败的情况。原创 2018-01-17 17:12:27 · 582 阅读 · 0 评论 -
资源限制
一:什么是资源限制:资源限制是指在进行并发编程时,×那个徐德执行速度受限于计算机硬件资源或软件资源。硬件资源限制:带宽的上传/下载速度、硬盘读写速度和CPU的处理速度;软件资源限制:数据库的连接数和socket连接数等。二:资源限制引发的问题:在并发编程中,讲代码执行的速度加快的原则是讲代码中的串行执行的部分变成并发执行,但是如果将某段串行的代码并发执行,因为受限于资源,仍然在串行执行,这时候程序...原创 2018-01-17 17:30:17 · 1294 阅读 · 0 评论 -
CPU的术语定义
1.内存屏障(memory barriers):是一组处理器指令,用于实现对内存操作的顺序限制; 2.缓冲行(cache line):缓存中可以分配的最小存储单位。处理器填写缓存线时会加载整个缓存线,需要使用多个主内存读周期; 3.原子操作(atomic operations):不可中断的一个或一系列的操作; 4.缓存行填充(cache line fill):当处理器识别到从内存中读取操作数是可缓原创 2018-01-18 16:52:41 · 1299 阅读 · 0 评论 -
JAVA内存结构和JAVA内存模型
JAVA内存结构:堆、栈、方法区; 堆:存放所有 new出来的东西(堆空间是所有线程共享,虚拟机气动的时候建立);栈:存放局部变量(线程创建的时候 被创建);方法区:被虚拟机加载的类信息、常量、静态常量等。 类加载系统:负责从文件系统或者网络加载class信息,加载的信息存放在方法区。 直接内存:JAVAnio库允许JAVA程序直接内存,从而提高性能,通常直接内存性能高于JAVA堆。读写频繁的原创 2018-01-18 12:01:43 · 9964 阅读 · 0 评论 -
JAVA虚拟机
一、定义:虚拟机就是一台虚拟的机器。它是一款软件,用来执行一系列的虚拟计算指令,一般虚拟机可分为系统虚拟机和程序虚拟机。JAVA虚拟机术语程序虚拟机。二、虚拟机参数:1.-XX:+PrintGC :每次触发GC的时候打印相关日志; -XX:+PrintGCDetails:更详细的GC日志; -Xms:堆初始值; -Xmx:堆最大可用值。 总:在实际工作中,我们可以直接将初始的堆大小与原创 2018-01-18 18:13:51 · 141 阅读 · 0 评论