Java 1.5前

并发实现

  • Java Green Thread

java 1.2 前的线程受os内核限制, 线程=进程, 绿色线程是JVM调度, 用来模拟多线程环境. 不需要本地线程支持.

  • Java Native Thread

对比

绿色线程在线程激活和线程同步方面优于本地线程

在I/O和上下文操作方面性能要低于本地线程

编程模型

  • Thread
  • Runnable

局限性(后续版本将解决完善这部分缺陷, 可对比学习)

  • 缺少线程管理的原生支持(缺少线程池)
  • 缺少"锁"API(只有 synchronized 关键字)
  • 缺少执行完成的原生支持

变通的实现方式:


public static void main(String[] args){
CompletableRunnable runnable = new CompletableRunnable();
Thread thread = new Thread(runnable,"Sub");
thread.start();
thread.join(); //此处阻塞主线程等待Sub完成, 否则得到的结果不准确
System.out.printf("[Thread: %s] is running\n", Thread.currentThread.getName());
System.out.printf("Sub Thread is completed, result is %s\n", runnable.getCompleted());
} private static class CompletableRunnable implements Runnable{
private volatile boolean completed = false; @Override
public void run(){
System.out.printf("[Thread: %s] is running\n", Thread.currentThread.getName()); completed = true;
} public boolean getCompleted(){
return completed;
}
}
  • 执行结果获取困难
  • Double Check Locking 不确定性 (单例模式)

Java 5

并发框架

  • J.U.C

编程模型

  • Executor, Execurtors, ExecutorService 等
  • Runnable , Callable
  • Future

Java 7

并行框架

  • Fork/Join

编程模型

  • ForkJoinPool
  • ForkJoinTask
  • RecursiveAction

Future (Java 5 引入) 限制

  • 无法手工完成
  • 阻塞式结果返回
  • 无法链式多个Future
  • 无法合并多个Future的结果
  • 缺少异常处理

Java 8

异步并行框架

  • Fork/Join

编程模型

  • CompletionStage
  • CompletableFuture

其他框架

  • Spring 和 Guava 使用不同的 ListenableFuture

最新文章

  1. logstash+elasticsearch+kibana管理日志(安装)
  2. 李炎恢《PHP第二季视频教程》之总结
  3. IOS开发基础知识--碎片18
  4. 从C#到Objective-C
  5. 【设计模式】Java版设计模式的类图汇总
  6. 个人对joomla3.2x和joomla2.5X浅薄看法
  7. Python自然语言工具包(NLTK)入门
  8. Android RecyclerView使用详解(二)
  9. git push冲突解决
  10. opencv 手写选择题阅卷 (三)训练分类器
  11. PopupWindow 问题集锦
  12. RC522 射频读卡器模块(MINI型)
  13. Uniconnection 连 mysql 有时会断线的
  14. java实现的快速排序算法
  15. 利用angular控制元素的显示和隐藏
  16. exists,in的区别-mysql
  17. vetur插件提示 [vue-language-server] Elements in iteration expect to have 'v-bind:key' directives错误的解决办法
  18. POJ 3278 抓奶牛(BFS入门题)
  19. BootstrapValidator . select 必须选择一个 .callback . select .option
  20. React 入门学习笔记整理(九)——路由

热门文章

  1. 数学思想方法-python计算战(8)-机器视觉-二值化
  2. 参数的范数正则/惩罚(parameter norm penalties)
  3. win10下Linux子系统开启ssh服务
  4. WPF中取得预定义颜色
  5. 使用batch批处理做目录及流程选择
  6. 机器学习:DeepDreaming with TensorFlow (二)
  7. 正定矩阵(definite matrix)
  8. matlab 正态分布相关 API
  9. windows安装Oracle10G
  10. 获取 UIElement 相对于屏幕原点所占用的矩形区域