并发编程尤其是异步并发编程,脑中必须要有对象在内存中的清晰分布图景以及对象和线程的关联关系分布图景。
要想掌握异步编程,我的观点是:
要以业务对象为中心,分析对象和线程的关联关系!!!!!!!!!因为即使是异步多线程编程,最终的业务流程流转也是以对象为中心的,比如说多线程间消息的交互,本质上也是对象间的相互作用!
根据我的总结,一般需要掌握如下几点关系:
1 对象的创建者是哪个线程。
2 总共创建了几个对象。
3 每个对象关联的线程上下文对象是谁。
4 每个对象的每个方法都会在哪个线程上下文对象中被调度执行。
说明:
对象关联的线程上下文对象,threadloacl对象,内存中代表线程本身的Thread对象都可以认为是线程上线文,总之通过关联线程上下文对象能关联到对应的线程。
线程上下文的作用是方便在不同的线程中调度一个对象的多个方法的执行。
在异步编程中,通常给一个对象绑定一个线程上下文对象,当前调用线程通过获得对象关联的线程上下文对象,并向上下文对象发送消息的方式来实现对同一个对象的方法的多线程调度(或者说线程切换)。发送消息的前提是上下文对象中要有一个消息/任务队列实现。