多线程学习
一滴点儿
这个作者很懒,什么都没留下…
展开
-
线程安全的集合类
1.Hashtable和Hashmap的区别 2.ConcurrentHashMap 3.CopyOnWriteArrayList 4.CopyOnWriteArraySet 5.CopyOnWrite机制 6.Vector 7.StringBuffer和StringBuilder的区别 ...原创 2019-04-21 09:55:22 · 233 阅读 · 0 评论 -
多线程之间的交互:线程阀
1.阻塞队列BlockingQueue 2.数组队列ArrayBlockingQueue 3.链表队列LinkedBlockingQueue 4.优先队列PriorityBlockingQueue 5.延时队列DelayQueue 6.同步队列SynchronousQueue 7.链表双向阻塞队列LinkedBlockingDeque 8.链表传输队列LinkedTransferQu...原创 2019-04-21 10:27:08 · 168 阅读 · 0 评论 -
线程池的工作机制
线程池的两个核心队列 1.线程等待池 线程队列 2.任务处理池 即正在工作的Thead列表 核心参数 1.核心池大小 即固定大小,设定好之后,线程池的稳定峰值,达到这个值之后的线程数大小不会释放 2.最大处理线程池数 ,当线程池里的线程数超过核心池的大小,小于最大处理线程池数后,会动态创建与回收线程池中的线程资源 ...原创 2019-04-21 10:53:23 · 743 阅读 · 0 评论 -
Thread
实现线程的三种方法 1.继承线程类Thread 2.实现接口Runnable 3.实现Callable类 继承Thread public class A extends Thread{ public void run(){ for (int i = 0; i < 5; i++) { System.out.println("A thr...原创 2019-04-20 13:50:14 · 145 阅读 · 0 评论 -
Thread线程安全一
Java内存模型与多线程 计算机读取数据的优先顺序是寄存器>高速缓存>内存 JLS(java语言规范)定义了一个同一的内存管理模型JMM(Java memery model),JMM屏蔽了底层平台的内存管理细节,在多线程中必须解决的两个问题是可见性和时序性 JMM规定了主内存和工作内存,主内存就是平时所说的堆内存,存放程序中所有的类实例,静态变量等数据,是多个线程共享的,工作内存...原创 2019-04-20 14:12:50 · 112 阅读 · 0 评论 -
Thread线程安全二
什么是线程安全? 多个线程操纵变量,能保持变量的一致性,正确性,没有发生相互修改和串行的情况。 隐式锁,又称为线程同步synchronized syschronized可以对一个方法使用,也可以对一个代码快进行使用。 public synchronized void Set(){ } public void set(){ synchronized...原创 2019-04-20 14:47:12 · 145 阅读 · 0 评论 -
Thread线程安全三
悲观锁和乐观锁 悲观锁:假设会发生并发冲突,屏蔽一切可能违反数据完整性的操作 读悲观锁:在读悲观锁之前一定要判断一下,数据是否正在被修改 乐观锁:假设不会发生冲突,只在提交操作时检查是否违反数据完整性 读乐观锁:不需要判定数据的一致性,只管自己读 import java.util.concurrent.locks.StampedLock; class Point{ priva...原创 2019-04-20 15:01:28 · 167 阅读 · 0 评论 -
Thread线程安全四
volatile关键字和原子操作:atomic volatile 意思是易变的,不稳定的。作用是告诉编译器,凡是被该关键字声明的变量都是易变。 对于易变的变量最好不要进行锁操作,容易造成死锁。被volatile修饰的变量,线程从主内存中读取后,进行操作,之后并不一定立刻刷性主内存中的变量。volatile只提供了内存的可见性,没有提供原子性。所以用来做高并发是不可靠的。 volatile适合...原创 2019-04-20 15:15:57 · 296 阅读 · 0 评论