我需要帮助处理涉及线程的Uni任务。在赋值中,我必须实现一个包含4个线程的程序,其中一个线程包含另一个线程。我在下面做了一个图表来帮助解释它:
最好/最有效的方法是什么?我的教授给出了一个非常有限的线程解释,从我到目前为止在网上收集到的内容,我将不得不实现Runnable接口,并在主程序的run()方法中创建4个类,这可能会结束因为我还没有完全掌握Java中线程的概念,所以一团糟。如果有人可以推荐我可以了解更多信息的资源,请在此处发布。
以下是我迄今为止的理解示例:
public class MainThread implements Runnable
{
/**
* The run method from the Runnable interface that
* executes the entire program.
*/
public void run()
{
class Controller implements Runnable
{
public void run()
{
class MiniWalker implements Runnable
{
public void run ()
{
}
}
}
}
class ObjectWalker implements Runnable
{
public void run ()
{
}
}
class GroupWalker implements Runnable
{
public void run ()
{
}
}
class YearWalker implements Runnable
{
public void run ()
{
}
}
}
/**
* The heart and core of this assignment.
*/
public static void main(String[] args)
{
(new Thread(new MainThread ())).start();
}
}
答案 0 :(得分:3)
线程不包含其他线程。线程可以控制其他线程,但这完全不同。您的控制图不必与您的类层次结构直接相关。
答案 1 :(得分:1)
我建议您阅读Brian Goetz' " Java Concurrency In Practice"并深入研究java.util下的并发类(例如Executor)。他们会让你的生活比原始生活更好。
答案 2 :(得分:0)
开始的好地方是http://docs.oracle.com/javase/tutorial/essential/concurrency/procthread.html。它将使您基本了解java中的并发性。在没有描述这个线程做什么的情况下(为什么你需要创建它们),很难写出哪个选择是最优的。
值得一提的是,你可以在没有明确编写新类的情况下生成线程。
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
}
}).start();
}
答案 3 :(得分:0)
Concurrent Programming是另一个很好的资源(几乎所有这些都是免费的谷歌书籍)。同样值得看an ExecutorService或ForkJoinPool。另外,read through the javadocs他们相当不错。
尝试将应用程序分解为本质上是任务并将它们放入线程池中可能是值得的。