多线程
文章平均质量分 80
man_zuo
这个作者很懒,什么都没留下…
展开
-
java多线程学习 ReentrantLock类的使用
ReentrantLock类 为了保证任何时刻只有一个线程能进入临界区,通常需要给临界区上锁,只有获得锁的线程才能进入临界区。为了达到上锁的目的,我们通常使用synchronized关键字。 在Java SE 5.0之后,java引入了一个ReentrantLock类,也可以实现给代码块上锁和释放锁的效果。 lock方法 和unlock方法 lock() 申请获得锁 如果获得锁,该线程可以继续往下执行 如果该锁已被其他线程获取,当前线程停止运行并进入阻塞状态,等待其他线程释放锁 unlock() 释原创 2020-05-25 07:31:30 · 649 阅读 · 0 评论 -
java多线程学习 volatile关键字的使用
volatile关键字是java虚拟机提供的最轻量级的同步机制,用来修饰变量,可以保证变量线程间的可见性且禁止指令重排序。 为了更好的理解volatile关键字,先来说下java内存模型 java内存模型 在Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽各个硬件平台和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。那么Java内存模型规定了哪些东西呢,它定义了程序中变量的访问规则,往大一点说是定义了程序执行的次序。 注原创 2020-05-18 19:08:41 · 349 阅读 · 0 评论 -
java多线程学习 synchronized 关键字的使用
synchronized是java 提供的一个并发控制的关键字,作用于对象上. 每个java对象都有一个内部对象锁,通过synchronized可以向指定对象请求获取对象锁,该锁是互斥锁,一个时刻只能有一个线程能获得这把锁,其他请求获得这把锁的线程都进入阻塞状态 synchronized提供的锁是可重入的锁 可重入锁实现原理: 每个锁关联一个请求计数器和一个占有它的线程。当计数为0时,认为锁是未被占有的;线程请求一个未被占有的锁时,JVM将记录锁的占有者,并且将请求计数器置为1 。 如果同一个线程再次.原创 2020-05-17 03:23:06 · 299 阅读 · 0 评论 -
java 多线程学习(一) 多线程的构造
进程和线程的理解: 进程:从狭义的角度来讲,进程就是一个正在运行的程序的实例。 线程:指的是进程中单一顺序的执行流,有时候也叫作轻量级进程。 举个例子: 当我们用word 2016程序 编辑word的时候,word2016 可以实时检查拼写的错误。 我们先运行word 2016 程序, 打开任务管理器,切换到进程页面,就可以找到word2016的进程,这就是正在...原创 2018-07-31 16:47:02 · 1190 阅读 · 0 评论 -
java多线程学习(三) 线程优先级
在java语言中,每个线程都有一个优先级,当线程调控器有机会选择新的线程时,线程的优先级越高越有可能先被选择执行。 在java里,线程的优先级可以设置1-10,数字越大代表优先级越高。默认情况下,一个线程继承它的父线程的优先级,即如果用A线程启动B线程,那么B线程的优先级就和A线程的优先级一致。也可以用setPriority方法提高或降低任一个线程的优先级。 但是,根据《JAVA核心技术》所讲...原创 2018-09-03 17:01:08 · 2271 阅读 · 1 评论 -
java多线程学习(二)线程的基本方法
线程休眠 static void sleep(long millis) // 让"当前线程"睡眠指定时间(毫秒),指定时间后继续自动执行 这是Thread类中的静态方法。这里提到“当前线程”的概念,谈谈我的理解: 关于“当前线程”的理解: 即Thread.currentThread()返回的线程,也可以说是正在执行sleep方法的线程。 下面来看个例子: public class m...原创 2018-09-03 14:20:26 · 920 阅读 · 0 评论