Java 给多线程编程提供了内置的支持。 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。 多线程是多任务的一种特别的形式,但多线程使用了更小的资源开销。 这里定义和线程相关的另一个术语 - 进程:一个进程包括由操作系统分配的内存空间,包含一个或多个 ...
分类:
编程语言 时间:
2020-05-28 16:30:28
阅读次数:
53
本文主要对Java并发(Concurrent)相关的概念进行说明。1.进程(Process)与线程(Thread)进程是系统资源分配的最小单元。线程是CPU调度的最小单元。一个进程至少包含一个线程,可以包含多个线程。这些线程共享这个进程的资源。每个线程都拥有独立的运行栈和程序计数器,线程切换开销小。多进程指的是操作系统同时运行多个程序,如当前操作系统中同时运行着QQ、IE、微信等程序。多线程指的是
分类:
编程语言 时间:
2020-05-22 09:21:33
阅读次数:
56
1. 概述 为了保证数据的一致性,在多线程编程中我们会用到锁,使得在某一时间点,只有一个线程进入临界区代码。虽然不同的语言可能会提供不同的锁接口,但是底层调用的都是操作系统的提供的锁,不同的高级语言只是在操作系统的锁机制基础上进行了些封装而已,要真正理解锁,还是得看操作系统是怎么实现锁的。 2. 锁 ...
分类:
其他好文 时间:
2020-05-21 17:43:14
阅读次数:
199
一、为什么需要协程 在回答这个问题之前,我们先回顾一下同步和异步的概念。 同步 :就是发出一个调用时,在没有得到结果之前,该调用就不返回,调用者需要一致等待该调用结束,才能进行下一步工作。 异步 :调用在发出去后,不等待结果,直接进行下一步工作,当结果出来后通过状态来通知调用者继续回来处理该调用。 ...
分类:
其他好文 时间:
2020-05-21 16:01:54
阅读次数:
47
多线程编程中的三个核心概念 原子性 这一点,跟数据库事务的原子性概念差不多,即一个操作(有可能包含有多个子操作)要么全部执行(生效), 要么全部都不执行(都不生效)。 关于原子性,一个非常经典的例子就是银行转账问题:比如A和B同时向C转账10万元。 如果转账操作不具有原子性,A在向C转账时,读取了C ...
分类:
编程语言 时间:
2020-05-19 23:00:26
阅读次数:
98
Part1.【 thread 】(#include <thread>) C++中的多线程,常通过thread类来定义一个thread对象(子线程)来实现。 thread t1 (func, arg1, arg2...); 其中func可以是一个函数名,或者函数对象;后边跟这个对象的参数; 在定义一个 ...
分类:
编程语言 时间:
2020-05-19 22:38:41
阅读次数:
58
原文链接:如何优雅地用Redis实现分布式锁 什么是分布式锁 在学习Java多线程编程的时候,锁是一个很重要也很基础的概念,锁可以看成是多线程情况下访问共享资源的一种线程同步机制。这是对于单进程应用而言的,即所有线程都在同一个JVM进程里的时候,使用Java语言提供的锁机制可以起到对共享资源进行同步 ...
分类:
其他好文 时间:
2020-05-19 20:34:55
阅读次数:
51
1. CompletableFuture的介绍 在Java8时被引入,在包java.util.concurrent下,是Java多线程编程中的一个类,扩展了Future中很多功能,CompletableFuture是一个实现了接口Future和CompletionStage的类。 public cl ...
分类:
其他好文 时间:
2020-05-16 20:42:45
阅读次数:
71
Linux系统下的多线程遵循POSIX线程接口,称为 pthread。编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a。顺便说一下,Linux 下pthread的实现是通过系统调用clone()来实现的。clone()是 Linux所特有的系统 ...
分类:
编程语言 时间:
2020-05-13 14:13:40
阅读次数:
85
原子性、可见性、有序性是多线程编程中最重要的几个知识点,由于多线程情况复杂,如何让每个线程能看到正确的结果,这是非常重要的。 原子性 原子性是指一个线程的操作是不能被其他线程打断,同一时间只有一个线程对一个变量进行操作。在多线程情况下,每个线程的执行结果不受其他线程的干扰,比如说多个线程同时对同一个 ...
分类:
编程语言 时间:
2020-05-13 13:59:27
阅读次数:
74