Проблемы с Многопоточностью

430
30 декабря 2016, 10:41

Не могу решить задачу на многопоточность. Методы run у разных потоков выполняются не "одновременно", а друг за другом, сначала один поток полностью отработал, потом другой, потом третий и т.д.(иными словами процессор выполняет один поток без переключения на другие). Как можно решить?

public class Solution {
    public static void main(String[] args) throws InterruptedException {
        PrintListThread firstThread = new PrintListThread("firstThread");
        PrintListThread secondThread = new PrintListThread("secondThread");
        firstThread.start();
        // firstThread.join();
        secondThread.start();
    }
    public static class PrintListThread extends Thread {
        public PrintListThread(String name) {
            super(name);
        }
        public void run() {
            printList(getList(20), getName());
        }
    }
    public static void printList(List<String> list, String threadName) {
        for (String item : list) {
            System.out.println(String.format("%s : %s", threadName, item));
        }
    }
    public static List<String> getList(int n) {
        List<String> result = new ArrayList<String>();
        if (n < 1) return result;
        for (int i = 0; i < n; i++) {
            result.add(String.format("String %d", (i + 1)));
        }
        return result;
    }
}
READ ALSO
Сортировка данных при работе с jsoup (Java)

Сортировка данных при работе с jsoup (Java)

Задача : Вывести на экран список из 10 городов с текущей температурой окружающей средыСписок вывести по алфавиту

518
Не выводит одно слово при формировании списка словосочетаний

Не выводит одно слово при формировании списка словосочетаний

Из кода выводится список сформированных по длине словосочетания, которые в дальнейшем печатаются на imageНе могу придумать условие, чтобы...

390
Отслеживать открытие Spinner

Отслеживать открытие Spinner

Хочу отслеживать событие открытия SpinnerПопробовал повесить на него View

363