当前页面: 开发资料首页 → J2SE 专题 → 有关观察者模式和多线程,请教
有关观察者模式和多线程,请教
摘要: 有关观察者模式和多线程,请教
假设我有两个类,A,B
我现在希望客户在调用A时,如果满足一定条件,就触发B中某个函数(所以我想到了观察者模式)
最重要的是,在B中那个函数执行完后,我希望A可以执行某些操作并继续与客户交互(所以我想到用线程,让B实现Runnable)
这里最大的问题是,我用了Java提供的Observer和Observable,导致在一些函数在使用上就有了冲突。。。
我想这种情况其实在很多地方都可能会有吧,没有接触过,请指点
up
线程同步问题?
其实不需要这么麻烦的,用了这个模式反而增加麻烦
调用A,符合特定条件A调用B的方法,继续执行A的代码
顺序结构搞定的东西,搞那么麻烦干么
在B中那个函数执行完后,我希望A可以执行某些操作并继续与客户交互(所以我想到用线程,让B实现Runnable)
多线程应该是没等B中的那个函数执行完,A就可以执行某些操作。。。
举个具体点的例子,比如对于某个AbstractList的子类,我要求每当想要获取的值的索引是N的倍数的时候,就对List的内容进行重新赋值(所以这个List的长度一般总为N)
当然,这并不是在一个Main里完成的操作,这里的List是要提供给客户一个接口,每当客户想要索取的List中元素的索引为N的倍数时,List的内容就自动变了,而客户并不知道。因此,redduke1202()朋友所说的似乎不行。
另外,有关多线程,可不可以用wait和notify的搭配完成线程的转换呢?
这个问题想得我头都大了,请指教阿
按照你举的例子,的确不是多线程,你必须等list内容变了以后,才能提供给用户所需要的数据。其实很简单的,被你想复杂了,除非你自己想学习多线程,但是你想的例子的确不对。
if(index 为 N的倍数){
ObjectCanChengeListContent.chengListContent();
}
//changeListContent() 可以为static这样不需要实例化对象
giveCustomerValue();