高并发
文章平均质量分 67
壹氿
做一个有准备的人吧~
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
synchronized锁机制
定义synchronized可以保证方法或者代码块在运行时,同一时刻只有一个方法可以进入到临界区,同时它还保证共享变量的内存可见性。Java6之后对synchronized进行了优化。锁对象普通方法同步,锁是当前实例对象静态同步方法,锁是当前类的class对象同步方法快,锁是括号里的对象public class SynchronizeTest { public synchronized void test1() { } public void test2().原创 2021-03-11 11:26:13 · 205 阅读 · 0 评论 -
线程池之ThreadPoolExecutor
线程池的优点第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高系统的客观理性。线程是稀缺资源,如果无限制的创建线程,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行同一分配、调优和监控。但是,要做到合理利用线程池,必须对其实现原理了如指掌。ThreadPoolExecutor是Executor中最核心的类。线程有五种状态:新建(new)、就绪(ready)、运行(runni.原创 2021-03-09 15:04:50 · 313 阅读 · 0 评论 -
线程池的类关系
Executor父接口ExecutorService 实现了Executor,增加了系列方法ScheduledExecutorService继承ExecutorService,为一个“延迟”和“定期执行”的ExecutorService。它提供了schedule 、scheduleAtFixedRate、scheduleWithFixedDelay几个方法安排任务在给定的延时执行或者周期性执行AbstractExecutorService实现ExecutorService接口,为其提供默认实.原创 2021-03-09 15:03:08 · 167 阅读 · 0 评论 -
等待/通知状态的变化
public class WaitNotify { static Object lock = new Object(); static boolean flag = true; public static void main(String[] args) throws InterruptedException { Thread waitThread = new Thread(new Wait(), "WaitThread"); waitThrea原创 2021-03-09 15:01:00 · 159 阅读 · 0 评论 -
几种常用的线程池
new CachedThreadPool public static ExecutorService newCachedThreadPool() { return new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, ...原创 2019-01-28 21:09:23 · 264 阅读 · 1 评论 -
线程池(ThreadPool)--解析
jdk1.5之前我们使用线程的时候就去创建一个线程,这样实现起来的非常方便。但是有一个问题就是,如果并发的线程数量很多,并且每个线程创建出来就执行一个任务就结束了,这样频繁的创建和销毁线程会大大的降低系统的效率,因为创建和销毁线程需要时间。jdk5之后加入了java.utilconcurrent包,这个包中主要介绍java中线程以及线程池的使用。为我们在开发中处理线程的问题提供了非常大的帮助。...原创 2019-01-28 20:04:05 · 663 阅读 · 1 评论 -
Concurrent---工具类(CountDownLatch、CycliBarrier、Semaphore)
CountDownLatch介绍java.util.concurrnet.CountDownLatch是一个同步辅助类,利用它可以实现类似计数器的功能,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。用一个给定的计数来初始化CountDownLatch,通过调用countDown()方法使计数减1,在计数达到0之前,被await()阻塞的线程会一直阻塞,之后,会释放所...原创 2019-01-26 16:07:32 · 411 阅读 · 0 评论 -
Concurrent--阻塞队列
原文地址:http://www.cnblogs.com/dolphin0520/p/3932906.html前言非阻塞队列的一个问题就是,它不会对当前线程产生阻塞,那么在面对类似消费者-生产者的模型时,就必须额外的实现同步策略及线程间唤醒策略,这个实现起来就非常麻烦。但是有了阻塞队列就不一样,它会对当前线程产生阻塞,比如一个线程从一个空的阻塞队列中取数据,此时这个线程会被阻塞直到阻塞队列中有元...转载 2019-01-26 11:15:32 · 454 阅读 · 0 评论 -
Concurrent----ReadWriteLock(读写锁)及Lock和synhronized的选择
ReadWriteLockReadWriteLock是一个接口public interface ReadWriteLock { /** * Returns the lock used for reading. * * @return the lock used for reading */ Lock readLock(); /*...原创 2019-01-25 16:43:49 · 465 阅读 · 0 评论 -
Concurrent---锁的种类+锁的底层实现
对象内存简图对象头: 存储对象的hashCode、锁信息或分代年龄或GC标志, 类型指针指向对象的类元数据,JVM通过这个指针确定该对象是哪个类的实例等信息。**实例变量:**存放类的属性数据信息,包括父类的属性信息。**填充数据:**由于虚拟机要求对象起始地址必须是8字节的整数倍。填充数据不是必须存在的,仅仅是为了字节对齐。当在对象上加锁时,数据是记录在对象头中。当执行synchron...原创 2019-01-24 21:33:05 · 436 阅读 · 3 评论 -
Concurrent包----ReetrantLock
ReentrantLock—重入锁建议应用的同步方式,相对效率比synchronized高。量级较轻和synchronized功能相似Lock():加锁,后边的代码被当前锁对象锁定,直到调用unlock()方法unlock():解锁tryLock()–不发生阻塞:尝试锁,如果有锁,无法获取锁标记,返回false;如果获取锁标记,返回true尝试锁在解除锁标记的时候,一定要判断是否获取到...原创 2019-01-24 20:06:36 · 195 阅读 · 0 评论
分享