avatar

正进一步

只有喜欢,才会全情投入,才会成功!!!

不关注架构设计细节的程序员不是一个好架构师

  • Home
  • Tags
  • Categories
  • Archives
  • 2018寄语
FutureTask状态与超时时间设置_源码

线程池中使用FutureTask时候当拒绝策略为DiscardPolicy和 DiscardOldestPolicy的时候在被拒绝的任务的FutureTask对象上调用get()方法会导致调用线程一直阻塞,所以在日常开发中尽量使用带超时参数的get方法以避免线程一直阻塞,另外通过重写这些拒绝策略设置拒绝任务的状态也可以达到想要的效果。多线程下使用时候最好使用ThreadLocal对象

设置超时时间和设置FutureTask任务状态为结束状态即可

foreach的集合为null会抛出异常

##foreach的集合为null,会抛出异常

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 List<String> arr  = Lists.newArrayList("112");
//iterator 不会报出异常; 遍历 倒是可以
for(String str: arr){
// arr.remove(0);
System.out.println(str);
}

List<String> arr2 = null;
//报出空指针异常
for(String str: arr2){
//iterator 不会异常; foreach会异常
// arr.remove(0);
System.out.println(str);
}
支付宝防并发方案之一锁二判三更新

引用自:http://www.jianshu.com/p/fdde21b89924
这里写图片描述

1
2
3
4
5
6
7
8
9
10
//第1步锁当前支付单
PaymentInfo resultPaymentInfo = commonPayCoreService
.queryPaymentForUpdate(createPaymentInfo.getId());
if (resultPaymentInfo.isFinalStatus()) {
//第2步,判断当前支付单状态,如果是终态,则直接返回
//不做任何更新
return resultPaymentInfo;
}
//第3步更新当前支付单状态到终态,并完成相关业务逻辑(支付成功)
payCoreService.updateRequestResult(payChannelResult);

AI技术能让老板更好地监督你

这里写图片描述
在日常生活中,我们与 AI 可能有多次交互机会,但其中许多交互我们自己可能都没意识到。人工智能已经嵌入到应用非常广泛的一些消费技术中,许多消费者也都没注意到。因此,要说人工智能为现代办公注入了更强大的功能自然也不足为奇。以企业为重点的人工智能技术能够将老板和员工的关系引导向一个更有趣的方向,并且这一转型目前已经开始发生。