Concurrency: Sharing Resources (1)
1. Improperly accessing resources 考虑这样一个例子:一个任务产生偶数序列,另外一个任务检查第一个任务产生的数字是否为偶数。 定义抽象类IntGenerator作为所有偶数序列生成器的基类: public abstract class IntGenerator { private volatile boolean canceled = false; publ…
Read more
learn, build, evaluate
1. Improperly accessing resources 考虑这样一个例子:一个任务产生偶数序列,另外一个任务检查第一个任务产生的数字是否为偶数。 定义抽象类IntGenerator作为所有偶数序列生成器的基类: public abstract class IntGenerator { private volatile boolean canceled = false; publ…
Read more
9. Coding variations 9.1. 直接继承Thread 创建任务除了通过实现Runnable接口,也可以通过直接继承Thread的方式来实现。 public class SimpleThread extends Thread { private int countDown = 5; private static int threadCount = 0; public Simp…
Read more
5. Sleep Sleep()可以在指定时间内阻塞当前任务的执行。 import java.util.concurrent.*; public class SleepingTask extends LiftOff { public void run() { try { while(countDown– > 0) { System.out.print(status()); // Old…
Read more
本系列是Thinking in Java (Fourth Edition)中Concurrency一章的内容总结。主要关注实例、常见用法和陷阱,便于日后查用。 1. Defining Tasks 任务(Task)用于描述希望并发运行的活动。定义一个任务,只需实现Runnable接口,并在run()方法中给出任务的具体行为: public class LiftOff implements Run…
Read more