
Java线程
文章平均质量分 97
lingengy
这个作者很懒,什么都没留下…
展开
-
Java多线程之lock原理
文章目录一、AQS(AbstractQueuedSynchronizer)AQS的内部实现1、Node的主要属性:2、waitStatus节点的几种状态:3、设置尾节点:4、设置首节点:5、state二、ReentrantLock的实现原理1、lock2、unlock一、AQS(AbstractQueuedSynchronizer)Lock之所以能实现线程安全的锁,主要的核心是AQS,AQS提供了一个FIFO队列,可以看做是一个用来实现锁以及其他需要同步功能的框架。AQS的使用依靠继承来完成,子类通过继转载 2022-02-06 01:48:39 · 912 阅读 · 0 评论 -
线程系列之线程基础
文章目录一,概念运行程序会创建一个进程但OS调度的最小单元是线程(轻量级进程)普通的程序包含的线程:二,启动线程和退出线程1,创建线程的方法2,启动线程3、线程中断interrupt方法中断线程的两种写法try/catch块中包含while循环处理不可中断的阻塞三、线程的状态四、常用方法深入理解1、start()2、sleep()3、yield()4、wait()一,概念运行程序会创建一个进程但...原创 2019-05-27 10:45:11 · 319 阅读 · 0 评论 -
线程间协作和通信
文章目录volatile关键字synchronized关键字等待和通知机制join方法volatile关键字多个线程同时访问一个共享的变量的时候,每个线程的工作内存有这个变量的一个拷贝,变量本身还是保存在共享内存中。Violate修饰的字段,对这个变量的访问必须要从共享内存刷新一次。最新的修改写回共享内存。可以保证字段的可见性。注意:Violate修饰的字段绝对不是线程安全的,没有操作的...原创 2019-05-29 00:55:01 · 607 阅读 · 0 评论 -
线程池详解
线程池思考:线程是不是越多越好?线程不仅java中是一个对象,每个线程都有自己的工作内存,线程创建、销毁需要时间,消耗性能。线程过多,会栈用很多内存操作系统需要频繁切换线程上下文(大家都想被运行),影响性能。如果创建时间+ 销毁时间 > 执行任务时间 就很不合算。线程池的推出,就是为了方便的控制线程数量。一、概念1、线程池管理器:用于创建并管理线程池,包括创建线程...原创 2019-09-05 03:34:25 · 1786 阅读 · 0 评论 -
JVM运行时数据区和CPU优化以及线程原子操作
文章目录一、JVM运行时数据区二、CPU性能优化手段1、缓存缓存同步协议2、运行时指令重排优化带来的问题3、内存屏障三、多线程中的问题四、原子操作1、什么是原子操作:2、竞态条件与临界区3、CAS(Compare and swap)机制CAS存在的问题一、JVM运行时数据区线程独占: 每个线程都会有它独立的空间,随线程生命周期而创建和销毁。线程共享: 所有线程能访问这块内存数据,随虚拟机或...原创 2019-06-21 16:19:41 · 710 阅读 · 0 评论 -
锁的分类和synchronized底层原理
文章目录一、JAVA中锁的概念1、自旋锁2、乐观锁3、悲观锁4、独享锁(写)5、共享锁(读)6、可重入锁、不可重入锁7、公平锁、非公平锁二、synchronized的底层原理1、一、JAVA中锁的概念1、自旋锁是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断的判断锁是否能够被成功获取,直到获取到锁才会退出循环。自旋锁有两种表现形式:1、AtomicI......原创 2019-06-24 00:46:40 · 1004 阅读 · 0 评论 -
java多线程
文章目录1、lock接口2、有了synchronized为什么还要Lock?synchronized的优缺点Lock的优缺点3、Condition1、lock接口方法签名描述void lock();获取锁(不死不休)boolean tryLock();获取锁(浅尝辄止)boolean tryLock(long time, TimeUnit unit) thr...原创 2019-07-12 01:22:41 · 344 阅读 · 0 评论