小编Ale*_*lex的帖子

带螺纹的观察者模式

我想运行几个线程并在我的main方法结束时加入它们,所以我可以知道它们何时完成并处理一些信息.

我不希望将我的线程放在一个数组中并逐个执行join(),因为join是一个阻塞方法,我会在主线程中等待一些仍在运行的线程,而其他线程可能已经完成,没有可能知道.

我已经考虑过为我的线程实现一个观察者模式的可能性:一个带有update()方法的接口,一个从线程扩展的抽象类(或实现runnable),用于监听器的set和get方法以及一个启动所有线程的类等他们完成

如果我的理解是正确的,观察者就不会阻塞特定的join()来获取一个线程.相反,它将以某种方式等待,直到线程调用update()方法来执行操作.在这种情况下,应在线程完成后立即调用update().

我对如何实现这一点毫无头绪.我尝试过类似的模型,但我不知道如何使用观察者/监听器唤醒/阻止我的主线程.我用这个旧帖子作为模板:如何知道其他线程是否已完成?但是一旦线程调用update()方法,我找不到唤醒main方法的方法.将只为所有线程实例化一个观察者对象.

你能想到一种方法来使用观察者模式来等待所有线程完成而不会阻塞main一个接一个的join()调用吗?任何其他解决这个问题的建议将不胜感激.提前致谢.

java multithreading design-patterns observer-pattern

7
推荐指数
2
解决办法
6259
查看次数

Python中os.walk的时间复杂度

我要计算算法的时间复杂度,但在其中我称之为os.walk,我不能将其视为单个操作,而是许多操作.

os.walk的来源让我感到困惑,因为文件树可能以多种方式排序(文件夹中的1.000.000个文件或每个文件夹的文件和1.000.000个文件夹.

我不是时间复杂的专家,我不能确定我应该考虑什么只是一个操作或许多,所以这让我卡住了.不要计算simlink标志,我假设它设置为false以忽略它们.

PD:我在Komodo IDE中找到了os.walk的来源,但我不知道如何找到它们作为javadocs.

python time-complexity python-3.x

1
推荐指数
2
解决办法
1763
查看次数