
多线程
oldmee
这个作者很懒,什么都没留下…
展开
-
sleep与wait的区别
sleep是Thread中的静态方法,wait是object的方法,主要的区别是sleep()被调用时不会释放对象锁,而调用wait()会释放线程锁,当调用notify或者notifyall的时候wait线程被唤醒,并等待进去执行,有空闲资源就会开始执行,不执行notify方法程序会一直处于挂起状态...原创 2018-11-16 11:19:55 · 143 阅读 · 0 评论 -
ThreadLocal
不要将ThreadLocal翻译为线程本地化或本地线程,英语的解释为:CopyValueIntoEveryThread Thread的三个重要方法: set():如果没有set操作的ThreadLocal,容易引起脏数据问题。 get():始终没有get操作的ThreadLocal对象是没有意义的。 remove():如果没有remove操作,容易引起内存泄...转载 2018-12-18 10:49:41 · 156 阅读 · 0 评论 -
主动停止线程的处理办法
众所周知,开启的线程会自生自灭,运行完后线程池会回收线程以便再次利用,但是总有那么一些情况需要主动停止线程。本人在网上查找了相关内容,没有找到任何答案,于是决定自己想办法解决。先描述一下为什么会有停止线程的需求,有这样的一个业务场景:1、客户端可以在任务开启后随时关闭运行的任务,这里得用个线程持续监听客户端任务。2、程序可以重复接受任务并运行,结合场景1,如果关闭运行的任务就会抛出异常,更通俗...原创 2019-01-02 10:25:26 · 1442 阅读 · 0 评论 -
单件模式中多线程情况下重复创建对象问题的三种处理办法
1、利用synchronize关键字public class Singleton { private static Singleton uniqueInstance; public static synchronize Singleton getInstance() { if (uniqueInstance == null) { ...原创 2019-01-07 10:33:29 · 971 阅读 · 0 评论 -
实现生产者与消费者问题的几种方式
生产者与消费者问题是多线程同步的一个经典问题。生产者和消费者同时使用一块缓冲区,生产者生产商品放入缓冲区,消费者从缓冲区中取出商品。我们需要保证的是,当缓冲区满时,生产者不可生产商品;当缓冲区为空时,消费者不可取出商品。下面介绍java中几种解决同步问题的方式 wait()与notify()方法 Lock与Condition机制 BlockingQueue阻塞队列 ...原创 2019-03-28 12:04:32 · 954 阅读 · 0 评论