Хорошая практика многопоточности

У меня есть приложение, в котором при статистике «игры» запускается несколько разных потоков. Я запускаю потоки следующим образом:

Thread thread = new Thread(new Runnable()
{
    public void run()
    {
        //...
    }
});

thread.setName("killMeAtEnd");
thread.start();

Позже, когда игра заканчивается, у меня внутри игры есть метод dispose(), который сортирует все запущенные потоки и завершает все потоки с именем «killMeAtEnd». Мой вопрос в том, является ли это хорошей практикой? Мое намерение состоит в том, чтобы мое приложение работало быстро и без помех, по моему опыту. Потоки, которые остаются «висящими», имеют тенденцию замедлять работу телефона до тех пор, пока приложение не будет завершено. Есть лучший способ сделать это? Стоит ли вообще заморачиваться по этому поводу?

РЕДАКТИРОВАТЬ:

Вот мой dispose(), если кому интересно. Этот код находится в классе Game.

public void dispose()
{
    Thread threads[] = (Thread[])Thread.getAllStackTraces().keySet().toArray();
    for(int x=0;x<threads.length;x++)
    {
        Thread thread = threads[x];
        if(thread.getName().equalsIgnoreCase(KILL))
        {
            try
            {
                thread.interrupt();
            }catch(Exception e){Log.e(Viewer.GAME,Log.getStackTraceString(e));}
            thread = null;
        }
    }
}

public static final String KILL = "endOnDispose";
7
задан Roman C 20 March 2016 в 08:09
поделиться