随笔分类 - 多线程
发表于 2019-11-08 10:43阅读:152评论:0推荐:0
摘要:一.CountDownLatch用法 CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。 CountDownLatch
阅读全文 »
发表于 2019-11-08 10:36阅读:545评论:0推荐:0
摘要:Lock读写锁机制可以实现! 在Java中Lock接口比synchronized块的优势是什么? Lock接口最大的优势是为读和写分别提供了锁。 1 import java.text.SimpleDateFormat; 2 import java.util.Date; 3 import java.u
阅读全文 »
发表于 2019-11-08 10:35阅读:203评论:0推荐:0
摘要:阻塞队列与普通队列的不同在于。当队列是空的时候,从队列中获取元素的操作将会被阻塞,或者当队列满时,往队列里面添加元素将会被阻塞。试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列插入新的元素。同样,试图往已满的阻塞队列中添加新元素的线程同样也会被阻塞,直到其他的线程使队列重新变得
阅读全文 »
发表于 2019-11-08 10:17阅读:740评论:0推荐:0
摘要:什么是死锁? 多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。 不适当的使用“synchronized”关键词来管理线程对特定对象的访问。“synchronized”关键词的作用是,确保在某个时刻只有一个线程被允许执行特定的代码块,因此
阅读全文 »
发表于 2019-11-08 10:03阅读:303评论:0推荐:0
摘要:看代码 public static void main(String[] args) { // TODO Auto-generated method stub new MyThread().start(); new MyThread().start(); } class MyThread exten
阅读全文 »
发表于 2019-11-08 09:38阅读:151评论:0推荐:0
摘要:生产者消费者模型是我们学习多线程知识的一个经典案例,一个典型的生产者消费者模型如下: public void produce() { synchronized (this) { while (mBuf.isFull()) { try { wait(); } catch (InterruptedExc
阅读全文 »
发表于 2019-09-21 08:34阅读:1656评论:0推荐:0
摘要:1.synchronized加同步格式: synchronized(需要一个任意的对象(锁)){ 代码块中放操作共享数据的代码。 } synchromized缺陷synchronized是java中的一个关键字,也就是说是java语言的内置的特性。 如果一个代码块被synchronized修饰,当一
阅读全文 »
发表于 2019-01-17 12:32阅读:335评论:0推荐:0
摘要:在Invoke或者BeginInvoke的使用中无一例外地使用了委托Delegate 一、为什么Control类提供了Invoke和BeginInvoke机制? 关于这个问题的最主要的原因已经是dotnet程序员众所周知的,我在此费点笔墨再次记录到自己的日志,以便日后提醒一下自己。 1、window
阅读全文 »
发表于 2019-01-11 13:46阅读:444评论:0推荐:0
摘要:其实SpinWait的code 非常简单,以前看过很多遍,但是从来都没有整理过,整理也是再次学习吧。 我们先看看SpinWait的一些评论或者注意点吧:如果等待某个条件满足需要的时间很短,而且不希望发生昂贵的上下文切换,那么基于自旋的等待是一种很好的替换方案,SpinWait不仅提供了基本自旋功能,
阅读全文 »
发表于 2019-01-03 16:29阅读:275评论:8推荐:0
摘要:ManualResetEvent是C#中一个比较常用的工具,可用于线程间通信,实现一种类似信号量的功能(不知道我这样描述是否恰当,有可能不是“类似”,而“就是”通过信号量来实现的,因为我也是最近才知道这个类,以前一直不知道,哈哈。如果有哪位清楚的话,请给我解惑。)。 先了解一下ManualReset
阅读全文 »