在执行程序时,为了提供性能,处理器和编译器常常会对指令进行重排序,但是不能随意重排序,不是你想怎么排序就怎么排序,它需要满足以下两个条件: 在单线程环境下不能改变程序运行的结果;存在数据依赖关系的不允许重排序 需要注意的是:重排序不会影响单线程环境的执行结果,但是会破坏多线程的执行语义。 ...
分类:
编程语言 时间:
2020-06-21 13:34:42
阅读次数:
55
你遇到过哪些原因造成MySQL异步复制延迟? 1、master上多为并发事务,salve上则多为单线程回放(MySQL 5.7起,支持真正的并行回放,有所缓解)。 2、异步复制,本来就是有一定延迟的(否则也不叫做异步了,介意的话可以改成半同步复制)。 3、slave机器一般性能比master更弱(这 ...
分类:
数据库 时间:
2020-06-18 19:02:55
阅读次数:
71
在并发环境下,我们经常使用的集合类(List、Map、Set)其实都是不安全的。 集合不安全问题之List List在单线程的情况下是安全的,但是多线程的情况下是不安全的,我们来看两段代码: 单线程 public class UnsafeList1 { public static void main ...
分类:
其他好文 时间:
2020-06-18 01:36:15
阅读次数:
64
线程池的好处Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池,相对于单线程串行处理(SerialProcessing)和为每一个任务分配一个新线程(OneTaskOneNewThread)的做法能够带来3个好处。降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需
分类:
编程语言 时间:
2020-06-17 16:56:29
阅读次数:
60
协程 本质:在单线程下,由用户自己控制一个任务遇到io阻塞了就切换另外一个任务去执行,以此来提升效率 目的:减少操作系统切换的开销,规避IO操作,将一条线程中的io操作 降到最低 定义 协程是一种用户态的轻量级线程,即协程是由用户程序自己控制调度的。 特点: 必须在只有一个单线程里实现并发 修改共享 ...
分类:
其他好文 时间:
2020-06-14 11:05:44
阅读次数:
47
关于线程和线程池的学习,我们可以从以下几个方面入手: 第一,什么是线程,线程和进程的区别是什么 第二,线程中的基本概念,线程的生命周期 第三,单线程和多线程 第四,线程池的原理解析 第五,常见的几种线程池的特点以及各自的应用场景 一、什么是线程 线程,程序执行流的最小执行单位,是行程中的实际运作单位 ...
分类:
编程语言 时间:
2020-06-13 00:50:53
阅读次数:
61
Node.js 是单进程单线程应用程序,但是因为 V8 引擎提供的异步执行回调接口,通过这些接口可以处理大量的并发,所以性能非常高。 Node.js 几乎每一个 API 都是支持回调函数的。 Node.js 基本上所有的事件机制都是用设计模式中观察者模式实现。 Node.js 单线程类似进入一个wh ...
分类:
Web程序 时间:
2020-06-10 19:25:53
阅读次数:
77
Event Loop即事件循环,是解决javaScript单线程运行阻塞的一种机制。 同步和异步任务(ajax网络请求;setTimeout 定时函数等)分别进入不同的执行"场所",同步的进入主线程,异步的进入Event Table并注册函数。当指定的事情完成时,Event Table会将这个函数移 ...
分类:
Web程序 时间:
2020-06-10 17:16:36
阅读次数:
66
单例模式的定义如下: 单例模式(Singleton Pattern):确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类成为单例类,它提供全局访问的方法。单例模式是一种对象创建型模型。 单例模式的分类: 饿汉单例 懒汉单例 单线程单例 多线程单例 饿汉单例: public cl ...
分类:
其他好文 时间:
2020-06-09 20:11:25
阅读次数:
62
一、并发编程的挑战 并发编程的挑战 多线程程序不一定运行的比单线程快: (1)上下文切换 任务从保存到再加载的过程就是一次上下文切换; 减少上下文切换的方法:无锁并发编程、CAS算法、使用最少线程和使用协程。 a、无锁并发编程:多线程会竞争锁会引起上下文切换,因此使用无锁并发编程,可以避免上下文切换 ...
分类:
其他好文 时间:
2020-06-09 16:36:45
阅读次数:
76