JavaRush /Java блогу /Random-KY /Жипти үзүү
Pegas
Деңгээл
Гродно

Жипти үзүү

Группада жарыяланган
Мен мураска калган эки класстын эскизин жасадым Runnable. Алар жөнөкөй толтуруу (Thread.sleep жана sout) бар. interruptedМен жана колдонуп үзгүлтүккө учураган жиптерди карап жаткам isInterrupted. Эмнегедир, үзгүлтүккө учураbyte, бирок программанын аткарылышы циклге өтөт жана ката пайда болот: Жипти үзүү - 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, анда программа кадимкидей иштейт. Маселе эмнеде, эмне үчүн ката пайда болот жана эмне үчүн программа токтотулbyte? Бул жерде 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