World of Anti Zhou


  • 首页

  • 标签

  • 分类

  • 归档

  • 搜索

Java中的线程池

发表于 2018-03-16 | 分类于 java |

实现原理

ThreadPoolExecutor执行execute:

  1. 如果当前运行的线程少于corePoolSize,则创建新线程来执行任务(需要获取全局锁)。
  2. 如果运行的线程等于或多余corePoolSize,则将任务加入BlockingQueue
  3. 如果无法将任务加入BlockingQueue(队列已满),则创建新的线程来处理任务(需要获取全局锁)。
  4. 如果创建新线程将使当前运行的线程超过maximumPoolSize,任务将被拒绝,并调用RejectedExecutionHandler.rejectedExecution()方法。
阅读全文 »

Java并发容器和框架

发表于 2018-03-15 | 分类于 java |

主要介绍ConcurrentHashMap、ConcurrentLinkedQueue、阻塞队列、Fork/Join框架

阅读全文 »

Java并发工具类

发表于 2018-03-15 | 分类于 java |

CountDownLatch

依赖于AbstractQueuedSynchronizer实现的共享同步器

阅读全文 »

锁

发表于 2018-03-14 | 分类于 java |

Lock

1
2
3
4
5
6
7
Lock lock = new ReentrantLock();
lock.lock();
try{
...
}finally{
lock.unlock();
}

1、灵活
2、尝试非阻塞地获取锁

1
2
3
public boolean tryLock() {
return sync.nonfairTryAcquire(1);
}

3、能被中断地获取锁

1
2
3
4
// 中断获取的一部分,parkAndCheckInterrupt 调用的是LockSupport.park(this); LockSupport 具有中断返回的特性。 
if (shouldParkAfterFailedAcquire(p, node) &&
parkAndCheckInterrupt())
throw new InterruptedException();

4、能超时获取锁

1
lock.tryLock(1, TimeUnit.SECONDS);

5、独占或共享的方式

阅读全文 »

Java并发编程基础

发表于 2018-03-13 | 分类于 java |

线程的状态

名称 说明
NEW 初始状态,线程被构建,但还没有调用start()方法
RUNNABLE 运行状态,java线程将操作系统中的就绪和运行统称为运行中
BLOCKED 阻塞状态,表示线程阻塞于锁
WAITING 等待状态,当前线程需要等待其他线程做出一些特定动作(通知或中断)
TIME_WAITING 超时等待状态,不同于WAITING,它可以在指定的时间自行返回的
TERMINATED 终止状态
阅读全文 »

文竹养育

发表于 2018-03-13 |
常见叶子发黄的原因 【文竹小枝发黄但不脱离】是因为盆土硬实,通气差根系的活力减退。所以要疏松盆土表面 【文竹叶尖枯黄或脱落】主要是浇水少,盆土偏干。应保持盆土湿润,并经常向植株喷洒水分,摆放在空气湿度大的地方。 【文竹枝梢颜色暗黄或呈黄绿色】是因强光照射或浇水过多所致。应将其移至荫蔽处或是有窗帘的窗 ...
阅读全文 »

安全驾驶

发表于 2018-03-13 |

驾驶安全最关键的是在极端情况下的车辆控制,包括爆胎、雪天车辆打滑的情况。只有保证自己在极端情况下,具有控制车辆的能力,才能称得上是一个合格的驾驶者。

阅读全文 »

java内存模型

发表于 2018-03-13 | 分类于 java |

JMM

Java内存模型定义了多线程之间共享变量的可见性以及如何在需要的时候对共享变量进行同步。

Java内存模型定义了volatile和synchronized的行为,更重要的是保证了同步的java程序在所有的处理器架构下面都能正确的运行。

mage-20180319231811

并发编程模型的两个关键问题

线程之间如何通信和同步。

如何通信

  1. 共享内存
  2. 消息传递

如何同步

  1. 显式
  2. 隐式

在共享内存并发模型中,同步是显式进行的。程序员必须显式指定某个方法或某段代码需要在线程之间互斥执行。在消息传递的并发模型里,由于消息的发送必须在消息的接受之前,因此同步是隐式进行的。

阅读全文 »

git基本操作

发表于 2017-09-27 | 分类于 git |
创建一个叫做“feature_x”的分支,并切换过去:1git checkout -b feature_x,(git checkout -b feature_x origin/master 在远程origin/master的分支基础上,创建feature_x分支) 切换回主分支:1git chec ...
阅读全文 »

Aggregation Template

发表于 2017-09-25 | 分类于 elasticsearch |
123456789101112131415161718192021222324252627282930313233343536373839404142{ "query": { "bool": { "mu ...
阅读全文 »
1…91011

Anti Zhou

一入java深似海,从此娱乐是路人。

103 日志
25 分类
45 标签
RSS
友情链接
  • yakir's notes
© 2019 Anti Zhou
由 Hexo 强力驱动 v3.7.0
|
主题 — NexT.Mist v6.1.0