Czy częste tworzenie nowych wątków w krótkich odstępach czasu to zła praktyka?

0
    public void playSound(final String fileName) 
    {         
        new Thread(new Runnable() { 
            @Override
            public void run() {
                try {
                    Clip clip = AudioSystem.getClip();
                    AudioInputStream inputStream = AudioSystem.getAudioInputStream(new File(fileName));
                    clip.open(inputStream);
                    clip.start(); 
                } catch (LineUnavailableException | UnsupportedAudioFileException | IOException e) {
                    System.out.println("play sound error: " + e.getMessage() + " for " + fileName);
                }
            }
        }).start();
    }

I teraz powiedzmy że chcę wywołać tą funkcję 100 razy w przeciągu 50 sekund. Czy to jest w jakiś sposób niezalecane?

3

Po kiego grzyba tworzysz wątek, gdy korzystasz z asynchronicznego API?

Proces ma zawsze określony limit liczby wątków, więc tworzenie wątków na wyrost nie jest najlepszym rozwiązaniem.
Tworzenie wątku jest kosztowne, dlatego stosuje się rozwiązania z pulą wątków.

2

Gdybyś w przyszłości chciał wykonywać wiele operacji asynchronicznie (i gdyby miało to sens), to poczytaj o Executorach.
http://docs.oracle.com/javase/tutorial/essential/concurrency/executors.html

0

Tak, jest to bardzo zła praktyka, z tego względu, że czas potrzebny do stworzenia nowych wątków mocno spowolni taką funkcję. Najlepiej stworzyć określoną liczbę wątków i na nich pracować (wspomniane wcześniej egzekutory).

1 użytkowników online, w tym zalogowanych: 0, gości: 1