我正在为一个已经存在的应用程序构建一个API,它有时会使用线程。所以我的方法是这样的
private SSG theSSG;
...
private void doSomething(){
theSSG.loadMenu();
//my code
}
现在,loadMenu
方法可能会产生一个线程,但不一定。如果是这样,doThings
将执行其余代码,而新线程正在执行其他代码。我需要的是一种等待loadMenu()
完成执行其所有子线程的方法,然后再进入下一行代码。我没有可能运行的线程的引用,因为这是基于用户的选择,所以我不能使用connect()
。我也不能编辑应用程序(或loadMenu
中发生的事情)。
除非有对线程对象的引用,否则无法判断线程是否已完成。
理论上,可以遍历JVM中所有现有的线程对象,并尝试识别可能与任务关联的线程(按名称)。但我不知道,如果没有帮助,您如何可靠地将线程与理解线程的内容区分开来。如果你能得到这样的帮助,那么你只需向孩子求助,这是一小步。
最好是重新设计应用程序的这一部分。要么进行更改,使框架知道(或能够发现)子线程是什么,要么将“等待线程完成”功能委托给能够实现它的东西。
有一个(无用的)例外。你可以通过调用线程来找到“这个线程”。currentThread()。但是,保证当前线程仍处于活动状态。如果你(错误地)试图让一个线程连接自己,那么就会发生坏事;e、 g.线程将死锁
问题内容: 问题描述 : - 步骤1: 在主线程中从用户那里获取输入FILE_NAME。 步骤2: 对该文件执行10个操作(即,计数字符,计数行等。),所有这10个操作必须位于单独的线程中。这意味着必须有10个子线程。 步骤3: 主线程等待,直到所有那些子线程完成。 步骤4: 打印结果。 我做了什么 :- 我用3个线程做了一个示例代码。 我不希望您遇到文件操作代码。 问题:- 我上面的代码没有给出
我想在C#中处理子目录和文件的文件系统/文件夹。我正在使用TPL库中的任务。这个想法是递归地执行它并为每个文件夹创建一个任务。主线程应该等待子线程完成,然后打印一些信息。事实上我只是想知道扫描何时完成。我已经开始使用线程池,然后切换到TLP。做了一些简单的例子。经过一些尝试从简单的代码到越来越臃肿的代码我被困在这里: 主线程有时仍然过早地继续,而不是在完成所有其他线程之后继续。(我对C#比较陌生,
这可能是在类似的背景下问的,但我在搜索了大约20分钟后找不到答案,所以我会问。 我已经编写了一个Python脚本(比如说:scriptA.py)和一个脚本(比如说scriptB.py) 在scriptB中,我想用不同的参数多次调用scriptA,每次运行大约需要一个小时,(这是一个巨大的脚本,做了很多事情……不用担心),我希望能够同时使用所有不同的参数运行scriptA,但我需要等到所有参数都完成
我打算在主线程中启动2个线程,主线程应该等到所有2个子线程完成,我就是这样做的。 在上面的代码中,确实让主线程等待子线程,但问题是,在第一个线程完成之前不会创建第二个线程。这不是我想要的。 我想要的是,这两个线程立即在主线程中创建,然后主线程等待它们完成。似乎做不到,是吗? 我想,也许我可以通过一个信号灯来完成这项工作,但还有别的方法吗?
我对Java线程和并发有点陌生。我读过关于同步和锁定块的书。它们让其他线程等待第一个线程完成其工作。 我只想知道一种方式,如果线程a正在执行它的执行,那么线程B不应该等待并跳过共享代码块的执行。
但这一个也不起作用。正确的答案是加入线程并删除2个睡眠: 我的问题是:为什么我的答案都不能被接受?我的实验室领导问,但他不能给我一个答案。在家里编写了测试代码,它似乎工作得很好。提前感谢您的帮助!