![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java多线程
线程、线程同步、线程池等相关知识
大锅菜~
这个作者很懒,什么都没留下…
展开
-
java01_创建线程3种方式
1. 继承Thread,并重写run方法。 2. 继承Tunable,并重写run方法,通过thread实例执行 3. 继承Callable<V>, 结合FutureTask<V> 注意:ft.get()会一直阻塞调用线程 import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTa...原创 2020-12-29 21:11:09 · 97 阅读 · 0 评论 -
java02_线程同步(锁分类)
1、java锁分类 这些锁的分类并不全是指锁的状态,有的指锁的特性,有的指锁的设计。(就是从不同的维度去区分锁) 概念上分类: 乐观锁、悲观锁 独享锁、共享锁 可重入锁 公平锁、非公平锁 分段锁 锁升级(无锁 -> 偏向锁 -> 轻量级锁 -> 重量级锁) JDK1.6 具体实现分类(具体的锁): 互斥锁、读写锁 (C++中有) 锁设计(不是一种具体锁): 分段锁 详情: 乐观锁:乐观锁认为一个线程去拿数据的时候不会有其他线程对数据进行更改,所以不会上锁。 .原创 2020-12-29 17:36:19 · 124 阅读 · 1 评论 -
java03_线程同步(volatile、 synchronized)
1、volatile 概念:轻量级锁。 使用场景:多个线程同时对未加volatile 的变量读写,会导致数据不准确。 使用: volatile boolean status = false; volatile特性: 保证共享变量对所有线程的可见性(只对原子操作有效,针对复合操作无效(比如:num++))。 1)当写一个volatile变量时,JMM会把该线程对应的本地内存中的变量强制刷新到主内存中去; 2)这个写会操作会导致其他线程中的缓存无效。 禁止指令重排序优化 .原创 2020-12-29 21:42:46 · 139 阅读 · 0 评论 -
java04_线程同步(ReentrantLock 、 读写锁)
5、ReentrantReadWriteLock 读写锁 概念:读和读互不影响(共享模式),读和写互斥,写和写互斥。继承自接口ReadWriteLock 特性:可重入,有公平、非公平两种模式 其他概念: 非公平模式(默认):当以非公平初始化时,读锁和写锁的获取的顺序是不确定的。非公平锁主张竞争获取,可能会延缓一个或多个读或写线程,但是会比公平锁有更高的吞吐量。 公平模式:当以公平模式初始化时,线程将会以队列的顺序获取锁。当前线程释放锁后,等待时间最长的写锁线程就会被分配写锁;或者有一组读线程...原创 2020-12-29 18:27:13 · 99 阅读 · 0 评论 -
java05_线程池
一、线程池 参考:https://www.cnblogs.com/zincredible/p/10984459.html 分类:Java通过Executors提供四种线程池: newSingleThreadExecutor :创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。 newFixedThreadPool :创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。 newScheduledThreadP.原创 2020-12-29 18:33:14 · 94 阅读 · 0 评论