/ / Как поддържа Thread надежден да работи - java, multithreading

Как се поддържа Thread надежден да работи - Java, многонишковост

Създадох програмата, която технически работи на 24 * 7.

Между другото, когато програмата има възможност да се позове на новото Thread понякога се появява неочаквана ситуация, както нишката не работи, въпреки че инструкцията е обработена.

Опитах се да стартирам нишката си по различен начин:

  1. инстанцира и стартира нишката като локална променлива

    void method()
    {
    new Thread(new Runnable(){...}).start();
    }
    
  2. същото като 1), но задайте неговия обект, който разпределя по основния процес

    Thread t;   //member of class own by main process
    void method()
    {
    t = new Thread(new Runnable(){...});
    t.start();
    }
    
  3. използвайте изпълнителната услуга като делегиращ орган

    ExecutorserviceObject.execute(new Runnable(){...});
    

Аз по-скоро имам проблеми в 1), когато имам дългогодишен ход от 2) и 3).

Мисля, че проблемът може да бъде свързан със събиране на боклука и / или планиране на нишки.

Как може да се случи това? Може ли някой да разработи какво се случва под прикритието?

Отговори:

0 за отговор № 1

Първият случай и вторият случай са доста сходни. Дори ако не зададете Thread обект на полето / променливата, остава силнодостигане поне до завършване на конеца (нормално или по изключение). Запазването му в поле прави по-лесно контрола на нишката (например свързването му или изпращането на прекъсване), но не е необходимо.

Така от кода, публикуван във въпроса, не трябва да има реална разлика между първия и втория случай. Вероятно проблемът ви е в друг код.