在不同线程中传递对象,尤其是匿名内部类对象,比如在A线程中初始化匿名内部类,传递到B线程中,在B线程中调用,相当于B线程中调用这个匿名内部类对应的外部对象。
不同线程调用,是主动调用这个匿名内部类对应的对象,可能造成并发问题,可以加锁。
队列是一个容器,也在不同线程中调用,但是因为主要作用是事件通知类型的,也就是说是异步模式,一个线程中发出这个消息放到队列中,另一个线程中去取出消息并触发事件,和上面的不同主要是队列是异步模式,多用在事件通知,上面是主动调用模式。
多线程加同步锁,或者使用单线程队列,都可以解决并发的问题,但是用法不一样。
android中在不同线程中传递了handle匿名内部类,但是使用的是队列调用,主要原因是一个UI程序,在刷新界面元素的机制上,最好像事件通知一样,一个线程循环取出事件并执行,理论上,不同线程中加锁调用handle改变UI也可以做到,但是决定UI显示的对象,在不同线程中实时改变,造成的一些问题可能不好解决,比较复杂。
总结,在解决并发问题时,优先是同步锁,单线程队列并不是解决多线程并发问题的,而是异步通知的。
1327

被折叠的 条评论
为什么被折叠?



