Мои выключатели отключения не запускаются. Крючок завершения работы предназначен для печати статистики после того, как программа завершена для всех запущенных потоков философов. Философский класс расширяет поток и просто жует и ест на основе наличия вилок или нет. Вот мой код.Проблемы с выключением Java Shutdown
public class Main {
private static ArrayList<Philosopher> philosophers = new ArrayList<Philosopher>();
public static void main(String[] args) {
int counter = 0;
int num = Integer.parseInt(args[0]); // number of philosopher threads to create
for(int x = 0; x < num; x++)
{
Fork one = new Fork(counter);
counter++;
Fork two = new Fork(counter);
counter++;
Philosopher p = new Philosopher(String.valueOf(x), one, two); // (Identifier, fork one, fork two)
philosophers.add(p);
}
// Create shutdown hook
Stats s = new Stats(philosophers);
Runtime.getRuntime().addShutdownHook(s);
// Start all philosopher threads
for(Philosopher phil : philosophers)
{
phil.start();
}
}
}
public class Stats extends Thread{
private ArrayList<Philosopher> list = new ArrayList<Philosopher>();
public Stats(ArrayList<Philosopher> al)
{
list = al;
}
public void run()
{
System.out.println("Test");
for(Philosopher p : list)
{
System.out.println(p.getPhilName() + " thought for " + p.getTimeThinking() + " milliseconds and chewed for " + p.getTimeChewing() + " milliseconds.");
}
}
}
Спасибо за любую помощь, которую вы можете предоставить, я очень благодарен.
Программа существует, как правило, без вмешательства? Что произойдет, если вы не сделаете phil.start? – TofuBeer
Что заставляет Философские потоки окончательно прекратиться? Как программа фактически перестает работать? Являются ли вилки ограниченными ресурсами? – Affe