![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
文章平均质量分 86
iteye_4064
这个作者很懒,什么都没留下…
展开
-
广告调度中心
背景介绍 一支广告的投放通常有很多的限定条件:地域、时段、频次、广告位、轮播顺序、用户标签【性别、年龄、爱好】。广告主的期望有良好的投放效果,广告平台期望有良好的投放量以及效果。假设媒体资源足够,那我们应该需要计算出每一分钟应该完成的投放量,调度就是为了完成这个目标。 调度需要的数据容量曲线分钟级别的排期总的投放量已经完成的数据量 计算公式...原创 2014-02-12 19:00:17 · 115 阅读 · 0 评论 -
Java内存模型
Java线程之间的通信对程序员完全透明,内存可见性问题很容易困扰Java程序员。 Java内存模型 并发编程模型的两个关键问题,线程之间如何通信及线程之间如何同步,通信是指线程之间使用什么机制来交换信息。在命令式编程中,线程之间的通信机制由两种:共享内存和消息传递。 在共享内存的并发模型里,线程之间共享程序的公开状态,通过写-读内...原创 2017-01-16 23:17:19 · 95 阅读 · 0 评论 -
Java并发机制的底层实现原理
Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM执行字节码,最终需要转化为汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和CPU指令。 volatile的应用 在多线程并发编程中synchronized和volatile都扮演着重要的角色,volatile是轻量级synchronized,它在多处理开发中...原创 2017-01-15 22:04:56 · 98 阅读 · 0 评论 -
并发编程的挑战
并发编程的目的是为了让程序运行得更快,但是,并不是启动更多的线程就能让程序最大限度地并发执行。在并发编程时,如果希望通过多线程执行任务让程序运行得更快,会面临非常多的挑战,比如:上下文的切换问题、死锁问题、以及受限制于硬件和软件资源限制问题。 上下文切换 即使单核处理器也支持多线程执行代码,CPU通过给每个线程分配C...原创 2017-01-10 22:37:05 · 100 阅读 · 0 评论 -
2016年书架整理
书架上的书有很多,有的只看了目录,有的只看了很少的内容,为了避免成为目录党,整理一下2016年已经看过的书以及下一阶段要看的书,目的是督促自己要把看书计划落实下来,同时简单回顾一下看书过程中的收获。 第一部分是2016年已经看过的书:<<Java7并发编程与实战手册>> 这是一本书的内容非常偏重于练习,学习之前更好的选择是先看并发相关...原创 2017-01-01 00:22:08 · 165 阅读 · 0 评论 -
Callable、FutureTask和Future
Callable是比Runnable更好的一个抽象,它有泛型的返回值,也可以抛出异常。/** * A task that returns a result and may throw an exception. * Implementors define a single method with no arguments called * {@code call}. *...原创 2016-10-07 02:49:47 · 88 阅读 · 0 评论 -
并发同步工具之Phaser
Phaser是一个可重用同步屏障,类似于CyclicBarrier、CountDownLatch,但是使用起来更灵活。A reusable synchronization barrier, similar in functionality to * {@link java.util.concurrent.CyclicBarrier CyclicBarrier} and * {...原创 2016-10-03 11:53:16 · 168 阅读 · 0 评论 -
Java多线程之ExecutorService.invokeAll()
方法说明: /** * Executes the given tasks, returning a list of Futures holding * their status and results when all complete. * {@link Future#isDone} is {@code true} for each * elemen...原创 2016-09-26 00:26:26 · 1511 阅读 · 0 评论 -
Java多线程之ExecutorService.invokeAny()
方法描述: /** * Executes the given tasks, returning the result * of one that has completed successfully (i.e., without throwing * an exception), if any do. Upon normal or exc...原创 2016-09-25 23:40:53 · 232 阅读 · 0 评论 -
Java重排序
重排序是指编译器和处理为了优化程序性能而对指令序列进行重新排序的一种手段。数据依赖 如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分为下列3中类型。名称代码示例说明写后读a=1;b=a;写一个变量之后,再读这个位置写后写a=1;a=2;写一个变...原创 2017-01-19 00:55:24 · 474 阅读 · 0 评论