一.先初步了解一下基本的概念 进程:在一个操作系统中,每个独立执行的程序都可以是一个进程。 线程:一个程序至少有一个进程,一个进程至少有一个线程,java里有一个主线程和垃圾回收线程。 线程的3中创建方式: 1.继承Thread类 2.实现Runnable接口 3.实现Callable接口,和Fut ...
分类:
编程语言 时间:
2018-06-14 21:05:28
阅读次数:
310
WaitGroup它能够一直等到所有的goroutine执行完成,并且阻塞主线程的执行,直到所有的goroutine执行完成。WaitGroup总共有三个方法Add:添加或者减少等待goroutine的数量Done:相当于Add(-1)Wait:执行阻塞,直到所有的WaitGroup数量变成0实践实例1跟实例2代码区别:少了一行代码gofunc(){}()实例1和实例3代码区别:runtime.G
分类:
编程语言 时间:
2018-06-14 20:48:56
阅读次数:
159
守护线程 java中有两种线程:一种是主线程,一种是守护线程。 用户线程是指:用户自定义创建的线程,主线程停止,用户线程不会停止。 守护线程:当进程不存在或主线程停止,守护线程也会停止。 使用setDaemon(true)方法设置为守护线程 多线程的运行状态: 线程从创建、运行到结束总是处于下面五个 ...
分类:
编程语言 时间:
2018-06-14 11:33:22
阅读次数:
169
单线程并发 基于单线程来实现并发,即只用一个主线程(很明显可利用的cpu只有一个)情况下实现并发,为此我们需要先回顾下并发的本质:切换+保存状态 cpu正在运行一个任务,会在两种情况下切走去执行其他的任务(切换由操作系统强制控制),一种情况是该任务发生了阻塞,另外一种情况是该任务计算的时间过长或有一 ...
分类:
编程语言 时间:
2018-06-09 15:31:02
阅读次数:
150
好久远的问题,为什么关注这个问题的人这么少? 或许是用到这个功能的情形比较少吧。 1、等待处理结果 为什么要用join()方法在很多情况下,主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,主线程往往将于子线程之前结束,但是如果主线程处理完其他的事务后,需要用到子线程的处理结果,也就是主 ...
分类:
其他好文 时间:
2018-06-09 11:25:23
阅读次数:
1657
方式一: 继承Thread类. /* * main函数也叫主函数(也叫主线程), * 因为所有代码的执行都是从这里开始的. ... ...
分类:
编程语言 时间:
2018-06-07 21:58:59
阅读次数:
168
一、协程介绍 本节的主题是基于单线程来实现并发,即只用一个主线程(很明显可利用的cpu只有一个)情况下实现并发,为此我们需要先回顾下并发的本质:切换+保存状态。cpu正在运行一个任务,会在两种情况下切走去执行其他的任务(切换由操作系统强制控制),一种情况是该任务发生了阻塞,另外一种情况是该任务计算的 ...
分类:
编程语言 时间:
2018-06-07 19:36:15
阅读次数:
185
本文将介绍我曾经做过的一个项目的服务器架构和服务器编程的一些重要细节。一、程序运行环境操作系统:centos7.0编译器:gcc/g++4.8.3cmake2.8.11mysql数据库:5.5.47项目代码管理工具:VS2013一、程序结构该程序总共有17个线程,其中分为9个数据库工作线程D和一个日志线程L,6个普通工作线程W,一个主线程M。(以下会用这些字母来代指这些线程)(一)、数据库工作线程
分类:
编程语言 时间:
2018-06-06 23:53:36
阅读次数:
221
本文将介绍我曾经做过的一个项目的服务器架构和服务器编程的一些重要细节。一、程序运行环境操作系统:centos7.0编译器:gcc/g++4.8.3cmake2.8.11mysql数据库:5.5.47项目代码管理工具:VS2013一、程序结构该程序总共有17个线程,其中分为9个数据库工作线程D和一个日志线程L,6个普通工作线程W,一个主线程M。(以下会用这些字母来代指这些线程)(一)、数据库工作线程
分类:
其他好文 时间:
2018-06-06 23:52:37
阅读次数:
166