Как остановить поток после завершения запуска?
У меня есть список задач и ограниченное количество потоков. Цель состоит в том, чтобы определить время, необходимое для выполнения задач с использованием этого количества потоков.
Я знаю, что что-то не так с тем, как я использую темы иRunnable
объект. Я новичок в них и могуКажется, я не могу понять, как это исправить.
Это ошибки сjava.lang.OutOfMemoryError: Java heap space error
на линииworker.start()
через несколько секунд.
Вот мой код:
public class Tasks {
static Timer timer; //times how long it takes to complete all tasks
public static void main(String[] args) {
Job t1 = new Sleep(5);
Job t2 = new Sum(1000);
Job t3 = new Sleep(3);
Job t4 = new Sleep(10);
Job t5 = new Sum(10);
Graph g = new Graph(5);
g.getNumEdges();
g.addEdge(t1, t2);
g.addEdge(t2, t3);
g.addEdge(t2, t4);
g.addEdge(t3, t5);
g.addEdge(t4, t5);
//System.out.println(t5.getPredecessor());
System.out.println(parseGraph(g, 2));
}
public static String parseGraph(Graph graph, int K)
{
long startTime = System.nanoTime();//start timer
int numThreads = K;
ArrayList x = graph.getNodes();
//check for cycles
CycleFinder dc = new CycleFinder(graph);
if(dc.hasCycle()==true)
{
System.out.println(dc.cycle());
return ("The graph has cycles and could not be parsed through.");
}
List threads = new ArrayList();
ArrayList ready = new ArrayList();
while (x.isEmpty()!= true)
{
for(int i=0; i