多线程
文章平均质量分 81
程序猿之家
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
一.初识Java并发编程
一.初识Java并发编程一.什么是并发编程 在程序中,有很多耗时但又不占用CPU的任务(比如输入输出),如果采用用串行的方式运行程序,那么CPU绝大部分的时间都是空闲的.CPU通过给每个线程分配时间片,让各个线程间断执行,以此来充分利用CPU.因为时间片非常短,让我们感觉这些任务是同时执行的,所以叫并发执行.(需要注意,这里的并发实际上每个瞬间只有一个线程在运行) 并发编程是为了提高CPU效率而设计的,那么并发编程一定快么?上图是一个累加程序运行时间分析,由表可知,当累加的次数大于1百万时,并原创 2021-03-31 15:31:54 · 152 阅读 · 0 评论 -
手撕三个线程并发按照顺序打印数字
三个线程并发按照顺序打印数字,直觉是创建一个runnable任务,然后建三个线程去执行。public class Main { //三个线程并发打印数字 public static void main(String[] args) { Count count = new Count(); Thread thread1 = new Thread(count, "1"); Thread thread2 = new Thread(count, "2原创 2020-08-04 14:53:40 · 384 阅读 · 0 评论 -
进程间通信----概括
进程间通信的方式1.管道(pipe)管道是通过pipe函数创建的,fd[0] 用于读,fd[1] 用于写。它具有一下限制:1.支持半双工通信2.只能在父子进程间通信2.有名管道(FIFO)有名管道不同于匿名管道之处在于它提供了一个路径名与之关联,以有名管道的文件形式存在于文件系统中,这样,即使与有名管道的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够彼此通过有名管道相互通信。FIFO 常用于客户-服务器应用程序中,FIFO 用作汇聚点,在客户进程和服务器进程之间传递数据。3.原创 2020-06-28 19:07:39 · 155 阅读 · 0 评论 -
线程间通信的方式----全面解析
一.volatile和synchronize1.volatile:读取数据时每次都从主内存中读取,每次写数据都要刷新到主内存,保证了数据的可见性和有序性。2.synchronize:对需要操作的数据进行加锁,保证只有一个线程访问,保证数据的可见性和原子性,但是不保证数据的有序性。二.等待通知机制调用此类方法首先都要获得锁,即该语句要放到synchronize语句块内部。如果没有加锁会抛出异常:Exception in thread “main” java.lang.IllegalMonitorSta原创 2020-06-28 16:16:35 · 382 阅读 · 1 评论 -
进程与线程的区别及选择
1.调度级别: 进程是资源调度的基本单位,线程是处理器调度的基本单位2.资源: 进程拥有自己的地址空间和堆,这些资源是线程共享的,线程也拥有独享的资源,比如程序计算器,寄存器,栈等。所以,进程切换开销会比线程开销大。3.通信方式:进程间通信方式主要有:1.管道(pipe)2.有名管道(FIFO)3.信号(Signal)4.消息(Message)队列5.共享内存(share memory)6.信号量(semaphore)7.套接字(socket)线程间通信方式主要有:1.volati原创 2020-06-28 16:14:43 · 287 阅读 · 0 评论
分享