JavaRush /Блоги Java /Random-TG /Қатъи ришта
Pegas
Сатҳи
Гродно

Қатъи ришта

Дар гурӯҳ нашр шудааст
Ман ду синферо, ки аз Runnable. Онҳо як пур оддӣ доранд (Thread.sleep ва sout). interruptedМан бо истифода аз ва риштаҳоро қатъ мекардам isInterrupted. Бо баъзе сабабҳо, таваққуф рух намедиҳад, аммо иҷрои барнома ба давра мегузарад ва хатогӣ ба амал меояд: Қатъи ришта - 1
java.lang.InterruptedException: sleep interrupted
	at java.lang.Thread.sleep(Native Method)
	at com.javarush.test.myExample.example.thread.Producer.run(Producer.java:15)
	at java.lang.Thread.run(Thread.java:745)
java.lang.InterruptedException: sleep interrupted
	at java.lang.Thread.sleep(Native Method)
	at com.javarush.test.myExample.example.thread.Consumer.run(Consumer.java:15)
	at java.lang.Thread.run(Thread.java:745)
Пас аз рух додани хато, риштаҳо ба таври номуайян кор мекунанд. Аммо агар шумо Runnableзангро аз синфҳои меросгирифта хориҷ кунед Thread.sleep, он гоҳ барнома ба таври муқаррарӣ кор мекунад. Мушкилот чист, чаро хатогӣ рух медиҳад ва чаро барнома қатъ намешавад? Ин ҷо main:
public class Solution
{
    public static void main(String[] args) throws InterruptedException
    {
        Thread thread1 = new Thread(new Producer());
        Thread thread2 = new Thread(new Consumer());

        thread1.start();
        thread2.start();

        Thread.sleep(1500);

        thread1.interrupt();
        thread2.interrupt();
    }
}
Синфи якум:
public class Producer implements Runnable
{
    @Override
    public void run()
    {
        while (!Thread.interrupted())
        {
            try
            {
                Thread.sleep(100);
            }
            catch (InterruptedException e)
            {
                e.printStackTrace();
            }
            System.out.println("Producer");
        }
    }
}
Синфи дуюм:
public class Consumer implements Runnable
{
    @Override
    public void run()
    {
        while (!Thread.interrupted())
        {
            try
            {
                Thread.sleep(100);
            }
            catch (InterruptedException e)
            {
                e.printStackTrace();
            }
            System.out.println("Consumer");
        }
    }
}
Ташаккур барои шарҳҳои шумо дар мавзӯъ)
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION