并发编程之任务协作

前言 当多个线程共享资源时,我们通常利用加锁的方式来避免一个线程对资源的操作影响另一线程对该资源的操作,例如使用synchronized关键字或Lock对象。而如果多个线程之间的关系不是互斥,而是协作完成某种任务,例如煮面,需要先把水烧开,再加面,然后加调料,又例如典型的生产者消费者问题。对于这种协作关系的多个线程,关键在于线程之间的握手或者说是通信,确保一个任务执行完之后能将信号传递…

more >>