我仍然很难将头绕在线程上,我正在尝试以最简单的方式做到这一点。我知道线程都必须有一个从 Runnable 类继承的 run 方法,但它们也可以有其他方法,对吗?
原因是,我有一个带有一些私有变量和一个运行方法的线程。它调用它的运行函数,一旦完成,我想用完全相同的运行方法重用线程。它做的事情完全相同,只是变量不同。所以我可以添加类似 setArray 方法的东西(线程包含一个私有字节数组),这样我就可以简单地用这个新数组再次调用 run,或者这是不允许的。我想简单地说,它就像
Thread thread = new MyThread();
thread.start();
// Check if the thread has finished in a non-blocking way
if (thread.isAlive() == false) {
thread.setArray(newArray)
thread.start();
}
基本上我只有固定数量的线程,当第一个线程完成运行时,我想稍微更改一下参数并让它再次运行。我不希望他们死,这似乎是 join 所做的。
对于具体问题,我说 4 个线程,每个线程都给出一个更大字节数组的集合大小块。每个线程使用 Deflater 压缩该数组并将其结果传递给处理同步的管理器对象。一旦第一个线程(如获得数组第一部分的线程,而不是第一个完成的线程)完成,它就会移动到下一个未分配给线程的块。
我知道线程池是一种选择,但它似乎有点矫枉过正,而且我真的不明白它们(我仍然遇到普通线程的问题)。