JavaRush /Java блогы /Random-KK /Жіпті үзу
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