JavaRush /Java Blogu /Random-AZ /İpliyi kəsin
Pegas
Səviyyə
Гродно

İpliyi kəsin

Qrupda dərc edilmişdir
-dən miras qalan iki sinfin eskizini çəkdim Runnable. Onların sadə bir doldurulması var (Thread.sleep və sout). interruptedMən və istifadə edərək mövzuların kəsilməsinə baxırdım isInterrupted. Nədənsə, fasilə baş vermir, lakin proqramın icrası dövrəyə keçir və xəta baş verir: İpi kəsmək - 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)
Səhv baş verdikdən sonra iplər qeyri-müəyyən müddətə işləməyə davam edir. RunnableAncaq zəngi -dən miras qalan siniflərdən silsəniz Thread.sleep, proqram normal işləyir. Problem nədir, niyə xəta baş verir və proqram niyə dayandırılmır? Burada 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();
    }
}
Birinci sinif:
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");
        }
    }
}
İkinci sinif:
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");
        }
    }
}
Mövzu ilə bağlı şərhləriniz üçün təşəkkür edirik)
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION