站内搜索: 请输入搜索关键词

当前页面: 开发资料首页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();


↑返回目录
前一篇: expected错误,详情内示
后一篇: 重现:classNotFoundException