
JAVA多线程
文章平均质量分 70
JAVA小镇V
不会前端的Java不是好程序猿!
技术公众号:Java小镇V
在职JAVA,走在全栈的路上
展开
-
Java多线程学习(1)进程与线程
通俗解释开个QQ,开了一个进程;开了迅雷,开了一个进程。在QQ的这个进程里,传输文字开一个线程、传输语音开了一个线程、弹出对话框又开了一个线程。所以运行某个软件,相当于开了一个进程。在这个软件运行的过程里(在这个进程里),多个工作支撑的完成QQ 的运行,那么这“多个工作”分别有一个线程。所以一个进程管着多个线程。通俗的讲:“进程是爹妈,管着众多的线程儿子”…专业术语首...原创 2018-07-18 10:51:37 · 127 阅读 · 0 评论 -
Java多线程学习(2)线程的常用方法和创建
在上一节我们介绍了线程和进程的区别,这一小节我们来具体介绍线程的基础知识。线程的基本方法 编号 方法 说明 1 public void start() 使该线程开始执行;Java 虚拟机调用该线程的 run 方法。 2 public void run() 如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable ...原创 2018-07-18 15:31:44 · 187 阅读 · 0 评论 -
Java多线程学习(3)线程的状态和属性
线程的状态线程共有如下6种状态:New(新创建)Runable(可运行)Blocked(被阻塞)Waiting(等待)Timed waiting(计时等待)Terminated(被终止)各个状态间的转换关系如下图所示: 图片和资料来源新建(new):新创建了一个线程对象。可运行(runnable):线程对象创建后,其他线程(比如main线程)调用了该对象的s...原创 2018-07-18 18:39:06 · 234 阅读 · 0 评论 -
JAVA多线程学习(9)-内存模型
转载自hollischuang为什么要有内存模型在介绍Java内存模型之前,先来看一下到底什么是计算机内存模型,然后再来看Java内存模型在计算机内存模型的基础上做了哪些事情。要说计算机的内存模型,就要说一下一段古老的历史,看一下为什么要有内存模型。内存模型,英文名Memory Model,他是一个很老的老古董了。他是与计算机硬件有关的一个概念。那么我先给你介绍下他和硬件到...转载 2018-07-25 11:05:40 · 184 阅读 · 0 评论 -
Java多线程学习(4)线程的同步
为什么需要同步在多线程程序中,如果多个线程同时操作相同资源,将会破坏操作过程的原子性,会导致数据的不准确,因此需要在公共资源中加入同步锁,保证在该线程未完成之前,其他线程不能访问该资源。竞争条件大多数实际的多线程应用中,两个或两个以上的线程需要共享对同一数据的存取。如果两个线程存取相同的对象,并且每一个线程都调用了一个修改该对象状态的方法,将会发生什么呢? 可以想象,线程彼此踩了对...原创 2018-07-19 18:23:47 · 146 阅读 · 0 评论 -
Java多线程学习(5)synchronized 关键字
在前面一节中 , 介绍了如何使用 Lock 和 Condition 对象。 然而,大多数情况下,并不需要那样的控制,并且可以使用一种嵌人到Java 语言内部的机制 。从 1.0 版开始,Java中的每一个对象都有一个内部锁.如果一个方法用 synchronized 关键字声明 ,那么对象的锁将保护整个方法.也就是说,要调用该方法,线程必须获得内部的对象锁 。如下:public sync...原创 2018-07-20 14:36:32 · 166 阅读 · 0 评论 -
Java多线程学习(6)内存模型和并发编程的基本概念
原文来自海子内存模型的相关概念大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存写入数据的过程跟CPU执行指令的速度比起来要慢的多,因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低...转载 2018-07-20 15:40:42 · 170 阅读 · 0 评论 -
Java多线程学习(7)volatile关键字
volatile的定义Java编程语言中允许线程访问共享变量。为了确保共享变量能被一致地和可靠的更新,线程必须确保它是排他性的使用此共享变量,通常都是获得对这些共享变量强制排他性的同步锁。Java编程语言提供了另一种机制,volatile域变量,对于某些场景的使用这要更加的方便。可以把变量声明为volatile,以让Java内存模型来保证所有线程都能看到这个变量的同一个值。vo...原创 2018-07-20 16:39:33 · 246 阅读 · 0 评论 -
Java多线程学习(8)执行器
文章转载自JAVA8简明教程构建一个新的线程是有一定代价的,因为涉及与操作系统的交互 。如果程序中创建了大量的生命期很短的线程,应该使用线程池 ( thread pool ) 。 一个线程池中包含许多准备运行的空闲线程 。将 Runnable 对象交给线程池 ,就会有一个线程调用 run 方法。当 run方法退出时,线程不会死亡 , 而是在池中准备为下一个请求提供服务 。另一个使用...转载 2018-07-20 20:21:44 · 951 阅读 · 0 评论