- 博客(5)
- 资源 (5)
- 收藏
- 关注
原创 Java实战小技巧(十):线程池ThreadPoolExecutor详解
在Java的并发编程中,为了合理控制创建线程的数量和优化资源开销,需要通过线程池提供线程资源,不在业务代码中显示创建线程。另外,线程池最好不要使用Executors去创建,而要使用ThreadPoolExecutor,有助于明确线程池的运行规则,创建符合业务场景需要的线程池,避免资源耗尽的风险。
2020-05-15 18:29:11 836
原创 Java实战小技巧(九):并发编程之volatile关键字
在Java并发编程中,关键字volatile和synchronized常用于解决线程安全问题,synchronized是阻塞式同步,在线程竞争激烈的情况下会升级为重量级锁,而volatile则是Java虚拟机提供的最轻量级的同步机制。一个被volatile修饰的变量,能够保证每个线程获取该变量的最新值,从而避免出现数据脏读的现象。
2020-05-11 16:15:36 310
原创 Java实战小技巧(八):并发编程之Semaphore类
Semaphore类是java.util.concurrent包的一个并发工具栏,是一个计数信号量,必须由获取它的线程释放,常用于限制访问某些资源的线程数量,例如限流。Semaphore可以控制同时访问的线程个数,通过`acquire()`函数获取一个许可,如果没有就等待。获取许可之后,可通过`release()`函数再释放许可。
2020-05-08 11:59:17 487
原创 Java实战小技巧(七):并发编程之CyclicBarrier类
CyclicBarrier类是java.util.concurrent包的一个并发工具类,字面意思就是回环栅栏,就是一个可循环利用的屏障。通过CyclicBarrier可以实现让一组线程阻塞等待,直到某个状态后,再全部同时继续向下执行。叫做回环的原因是当所有等待线程都被释放以后,CyclicBarrier可以重新使用。CyclicBarrier常被用于多线程计算数据,最后合并计算结果的场景。
2020-05-07 18:06:23 280
原创 Java实战小技巧(六):并发编程之ReentrantLock类
Java中实现独占锁的方法除了使用关键字synchronized外,还可以使用ReentrantLock类。ReentrantLock和synchronized都是独占锁、重入锁,二者在性能上没有区别,但ReentrantLock的功能更加丰富,使用起来更为灵活,也更适合复杂的并发场景。synchronized的优点是操作简单,一般简单的并发场景使用synchronized就够了。
2020-05-06 11:38:47 296
WebSocket C#插件
2018-04-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人