Моя программа запускает поток, создаются ли какие-то объекты.Как прервать поток, даже если он еще не закончен?
Foo() {
t = new Thread(this);
t.start();
}
И я выполняю цикл while внутри своих потоков.
while(bool){
// do something
}
У меня есть один поток, управляющий значением булева bool. Но как я могу закончить некоторые из них, прежде чем мой другой поток изменит логическое значение? Я думаю, что установка t = null не работает. Есть ли способ мусора собирать поток, прежде чем он перестанет работать?
[Реализовать свой собственный механизм прерывания.] (Http://docs.oracle.com/javase/tutorial/essential/concurrency/interrupt.html) –
Случай Thread не имеет ничего общего с основным потоком выполнения. GCing это не волшебным образом приведет к тому, что поток перестанет выполняться, подобно тому как GCing экземпляр File не удалит файл. –
Важно отметить, что 'bool' должен быть' volatile boolean', поэтому его можно изменять и читать несколькими потоками. – Gray