程序:有序严谨的指令集 进程:程序的同时多运行 线程:程序中不同的执行路径 线程同步: 是指一段程序执行过程中,无论成功还是失败,其他线程都会等待这段程序执行完毕,才会转入其他线程 extend Thread, 重写run方法, 直接new 调用start() implement Runnable ...
分类:
编程语言 时间:
2018-12-01 22:02:54
阅读次数:
199
模块表示一段可执行的程序,其程序、数据、资源都被加载到内存中,由系统构建一个数据结构来管理它,就是一个模块,这个数据结构被称作MDB。进程是一大堆拥有权的集合,进程拥有地址控件,动态配置的内存、文件、线程、和一系列模块,操作系统用PDB的数据结构来管理它。线程表示程序代码的执行事实,系统用TDB数据 ...
分类:
编程语言 时间:
2018-11-24 11:47:35
阅读次数:
226
在前面几篇文章中,我们讨论了同步容器(Hashtable、Vector),也讨论了并发容器(ConcurrentHashMap、CopyOnWriteArrayList),这些工具都为我们编写多线程程序提供了很大的方便。今天我们来讨论另外一类容器:阻塞队列。 在前面我们接触的队列都是非阻塞队列,比如 ...
分类:
编程语言 时间:
2018-11-22 20:45:23
阅读次数:
204
在 C++98 的时代,C++标准并没有包含多线程的支持,人们只能直接调用操作系统提供的 SDK API 来编写多线程程序,不同的操作系统提供的 SDK API 以及线程控制能力不尽相同。到了 C++11,终于在标准之中加入了正式的多线程的支持,从而我们可以使用标准形式的类来创建与执行线程,也使得我 ...
分类:
编程语言 时间:
2018-11-20 23:04:40
阅读次数:
215
一、进程与线程的区别 1.进程是应用程序在内存总分配的空间。(正在运行中的程序) 2.线程是进程中负责程序执行的执行单元、执行路径。 3.一个进程中至少有一个线程在负责进程的运行。 4.一个进程中有多个线程在运行的程序,为多线程程序。 5.多线程技术是为了解决多部分代码同时执行。 6.多线程的优点是 ...
分类:
编程语言 时间:
2018-11-11 15:04:53
阅读次数:
173
多线程执行 多任务介绍 现实生活中 有很多的场景中的事情是同时进行的,比如开车的时候 手和脚共同来驾驶汽车,再比如唱歌跳舞也是同时进行的; 试想,如果把唱歌和跳舞这2件事情分开依次完成的话,估计就没有那么好的效果了(想一下场景:先唱歌,然后在跳舞,O(∩_∩)O哈哈~) 程序中 如下程序,来模拟“唱 ...
分类:
编程语言 时间:
2018-11-11 00:56:08
阅读次数:
174
在执行程序时为了提高性能,提高并行度,编译器和处理器常常会对指令做重排序。重排序分三种类型: 问题:重排序都可能会导致多线程程序出现内存可见性问题 1)编译器优化的重排序。编译器在不改变单线程程序语义的前提下,可以重新安排语句的执行顺序。 2)指令级并行的重排序。处理器多条指令重叠执行,改变语句对应 ...
分类:
编程语言 时间:
2018-11-02 20:17:23
阅读次数:
138
一、基本概念 先补充一下概念:Java 内存模型中的可见性、原子性和有序性。 可见性: 可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉。通常,我们无法确保执行读操作的线程能适时地看到其他线程写入的值,有时甚至是根本不可能的事情。为了确保多个线程之间对内存写入操作的可见性,必须使用同步 ...
分类:
编程语言 时间:
2018-10-31 10:33:55
阅读次数:
159
在前面几篇文章中,我们讨论了同步容器(Hashtable、Vector),也讨论了并发容器(ConcurrentHashMap、CopyOnWriteArrayList),这些工具都为我们编写多线程程序提供了很大的方便。今天我们来讨论另外一类容器:阻塞队列。 在前面我们接触的队列都是非阻塞队列,比如 ...
分类:
编程语言 时间:
2018-10-25 11:19:50
阅读次数:
151
await & async模式是C#中一个很重要的特性,可以用来提高异步程序(多线程程序)的执行效率。但是如果尝试用await关键字来await一个为null的Task对象,会导致程序抛出NullReferenceException异常。 新建一个.NET Core控制台项目,贴入如下代码: 输出结 ...