1、为什么要线程通信 多个线程并发执行时,在默认情况下CPU是随机切换线程的,有时我们希望CPU按照我们的规律执行线程,此时就需要线程之间协调通信。 2、线程通讯方式 线程间通信常用方式如下: l 休眠唤醒方式:Object的wait、notify、notifyAll 和 Condition的awa ...
分类:
编程语言 时间:
2020-01-21 17:47:08
阅读次数:
85
BlockingQueue的继承结构 BlockingQueue是线程安全的阻塞队列,当队列为空时,拉取队列的线程会等待队列中重新有元素;当队列满时,添加元素的线程会等待队列有空位储存新元素。BlockingQueue的继承接口如下: 生产者-消费者模式 ArrayBlokingQueue实现类需要 ...
分类:
编程语言 时间:
2020-01-20 18:50:01
阅读次数:
106
线程安全 假如Java程序中有多个线程在同时运行,而这些线程可能会同时运行一部分的代码。如果说该Java程序每次运行的结果和单线程的运行结果是一样的,并且其他的变量值也都是和预期的结果是一样的,那么就可以说线程是安全的。 解析什么是线程安全:卖电影票案例 假如有一个电影院上映《葫芦娃大战奥特曼》,售 ...
分类:
编程语言 时间:
2020-01-19 09:36:45
阅读次数:
101
并发与并行 并发:指两个或多个事件在同一时间段内发生。 并行:指两个或多个事件在同一时刻发生(同时发生)。 进程与线程 进程: 是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一 ...
分类:
编程语言 时间:
2020-01-19 09:15:32
阅读次数:
91
环境 jdk version:jdk1.8.0_171 一、Executor接口执行器接口,也是最顶层的抽象核心接口, 分离了任务和任务的执行。 二、ExecutorService接口在Executor的基础上提供了执行器生命周期管理,任务异步执行等功能。在Executor的基础上增强了对任务的控制 ...
分类:
编程语言 时间:
2020-01-18 14:53:28
阅读次数:
107
1.cpu个数、核数、线程数、Java多线程关系的理解 URL地址:https://blog.csdn.net/helloworld0906/article/details/905471592.物理cpu数和cpu核数和逻辑cpu数和vcpu区别 URL地址:https://blog.csdn.ne ...
分类:
编程语言 时间:
2020-01-17 10:11:49
阅读次数:
179
线程通信的例子:使用两个线程打印 1-100,线程1、线程2交替打印。涉及到的三个方法:wait():一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器。notify():一旦执行此方法,就会唤醒被wait的一个线程。如果有多个线程被wait,就唤醒优先级高的那个。notifyAll():一旦 ...
分类:
编程语言 时间:
2020-01-17 00:02:45
阅读次数:
86
一、多线程出现的安全问题: 1、问题的原因: 多个线程执行的不确定性引起执行结果的不稳定。当多条语句在操作同一个线程共享数据时,一个线程对多条语句只执行了一部分,还没有执行完,另一个线程参与进来执行,导致共享数据的错误。2、解决的办法: 对多条操作共享数据的语句,只能让一个线程都执行完,在执行过程中 ...
分类:
编程语言 时间:
2020-01-16 23:47:23
阅读次数:
71
一、程序、进程与线程的理解: 1、程序(program): 是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。 2、进程(process): 是程序的一次执行过程, 或是正在运行的一个程序。是一个动态的过程:有它自身的产生、存在和消亡的过程,即生命周期。(1)例如:运行 ...
分类:
编程语言 时间:
2020-01-16 22:06:38
阅读次数:
87
一、Java线程的调度方法: 1、同优先级线程组成先进先出队列(先到先服务),使用时间片策略。2、对高优先级,使用优先调度的抢占式策略。 二、Java线程的优先级: 1、线程的优先级等级MAX_ PRIORITY: 10、 MIN_ PRIORITY: 1、 NORM PRIORITY: 52、涉及 ...
分类:
编程语言 时间:
2020-01-16 21:43:11
阅读次数:
124