потоки в java в одном файле

Помогите составить простую программу. на ее примере хочу разобраться с потоками.

есть 2 кода:

//первый
for(int a = 0; a < 5; a++){
    System.out.println("1");
}
// второй
for(int b = 0; b < 5; b++){
    System.out.println("0");
}

мне нужно объединить эти 2 программы, чтобы они работали одновременно и важно ! в одном файле !. вывод должен быть примерно таким:

0
1
0
1
...

Ответы (1 шт):

Автор решения: insolor

Простейшая реализация: куски кода, которые должны выполняться в отдельных потоках, кладем в отдельные методы, эти методы передаем в конструктор класса Thread. В циклы нужно добавить небольшую паузу, иначе не успеет произойти переключение на второй поток.

class Solution {

    private static void fun1() {
        //первый
        for(int a = 0; a < 5; a++){
            System.out.println("1");

            try {
                // Делаем паузу в 100 миллисекунд, чтобы успело произойти переключение на другой поток
                Thread.sleep(100);
            } catch (InterruptedException e) {
                // Thread.sleep может выбросить исключение, если поток пытаются прервать,
                // нужно это исключение обработать - просто выходим из цикла
                break;
            }
        }
    }

    private static void fun2() {
        // второй
        for(int b = 0; b < 5; b++){
            System.out.println("0");

            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                break;
            }
        }
    }

    public static void main(String[] args) {
        // Создаем потоки, в объект Thread передаем метод, который должен выполняться в этом потоке
        Thread thread1 = new Thread(Solution::fun1);
        Thread thread2 = new Thread(Solution::fun2);

        // Запускаем потоки
        thread1.start();
        thread2.start();
        // Выполнение программы завершится как только завершатся все не daemon потоки,
        // поэтому дополнительно никакого ожидания завершения потоков тут делать не нужно
    }
}
→ Ссылка