多线程
Lebron_Chen
这个作者很懒,什么都没留下…
展开
-
死锁问题的出现和解决
什么是死锁死锁是多线程编程中会遇到的一个问题,下面就先来讲一下什么是死锁。首先,大家都知道的是,当一个线程持有一个锁的时候,其他尝试获取这个锁的线程都会阻塞。那么如果,线程A持有了锁A,并且尝试获取锁B,线程B持有了锁B,并且尝试获取锁A。那么这两个线程将会永远阻塞下去,这就是最简单的死锁。示例下面给出简单的死锁代码实现:public class DeadLockT...原创 2018-07-25 10:02:27 · 1801 阅读 · 0 评论 -
SimpleDateFormat的线程安全
SimpleDateFormat是我们格式化时间格式时常用到的一个类,通常情况下我们需要使用到它时,都会new一个新的对象出来,所以不会遇到多线程场景下的线程安全问题。下面带大家一起了解一下为什么SimpleDateFormat时线程不安全的,以及解决办法。当然如果你说我就每次使用到它的时候new一个新的对象出来不就行了吗,那么我只能说,兄dei,我也是这么干的。但是如果你有空的话也可...原创 2018-07-15 01:10:07 · 518 阅读 · 0 评论 -
如何区分interrupt()、interrupted()、isInterrupted()
看到标题上那三个兄弟了吗,看起来跟孪生兄弟一样,傻傻分不清楚。很多人可能都知道这些方法,但是又不太能分清,所以给大家带来这篇文章,带大家一起区分一下这三个方法。首先这三个方法都是Thread类的方法,按照惯例,介绍方法,先看源码interrupt()public void interrupt() { if (this != Thread.currentThread(...原创 2018-07-22 23:32:36 · 640 阅读 · 0 评论 -
怎样让线程停止
上一篇文章讲到了interrupt()、interrupted()、isInterrupted()这三个方法,最后留了个尾巴,那么今天这一篇文章就给大家讲一下怎样停止线程。stop()方法说到线程停止,第一个想到的办法就是Thread类的stop()方法,下面就先讲一下stop()方法。@Deprecatedpublic final void stop() { ......原创 2018-07-22 23:33:05 · 1163 阅读 · 0 评论 -
ThreadLocal的原理和使用
引子前几天有一篇文章分享了SimpleDateFormat类在多线程情况下不安全的问题,文章中也提到了使用ThreadLocal来解决的这种办法,今天就来给大家介绍一下ThreadLocal。由于SimpleDateFormat类线程不安全,所以我们不能用public static修饰一个SimpleDateFormat变量来共多个线程使用。既然多个线程不能公用同一个SimpleDat...原创 2018-08-02 22:35:23 · 217 阅读 · 0 评论 -
线程池ThreadPoolExecutor的使用和原理
引子通常我们在需要异步调用一个任务的时候,会手动创建一个线程去执行异步任务,但是每次手动启动一个线程,使用完毕就丢弃了,太浪费资源。所以线程池的概念就出来了,就跟数据库连接池一样。通常创建和销毁比较耗费资源的连接都会使用“池”来管理。线程池的好处降低资源消耗:通过已创建的线程来执行异步任务,降低了线程创建和销毁的消耗提高响应速度:异步任务不需要等待线程创建的时间,直接使用创...原创 2018-08-02 22:37:57 · 230 阅读 · 0 评论 -
单例模式的几种实现方式
1.饿汉如果应用程序总是创建并使用单例实例或在创建和运行时开销不大class Single { private Single(){} private static Single single= new Single(); public static Single getInstance(){ return single; }}...原创 2018-08-02 22:40:48 · 888 阅读 · 5 评论