Работа с потоками. Приостановка потока

327
27 октября 2017, 11:31

Вообщем, хотелось бы реализовать такое: после того как простое число найдено, поток приостанавливает свою работу и продолжают(потоки) свою работу, только после того, как оба успешно произвели поиск.

class Search extends Thread
    { Scanner input = new Scanner(System.in);
    int threadie;
    static   int a = 0;
    static   int b = 0;
    public Search(int threadID)
    {
        threadie = threadID;
    }
    public void run()
    {
        System.out.println("Границы поиска?");
                int n = Integer.parseInt(input.nextLine());
                int c =  2 * n / 3;    
        for (int i = 0; i < n; i++)
        {
            if(threadie == 1){
                if (i < c)
                {
                    if ((Search.isPrime(i))) { a++;  }
                }
                        }
            if(threadie == 2){
                if (i >= c )
            {
                if ((Search.isPrime(i))) { b++; }
            }}
        }

           if(threadie == 1)  System.out.println("Поток №" + threadie + " содержит " + a + " простых чисел ");
           if(threadie == 2)  System.out.println("Поток №" + threadie + " содержит " + b + " простых чисел ");
    }
    static boolean isPrime(long n)
    {
        if (n <= 1) return false;
        double limit = Math.sqrt(n);
        for (long i = 2; i <= limit; i++)
        {
            if (n % i == 0) return false;
        }
        System.out.println("Простое число: "+n);
                return true;
    }
        public static void main(String[] arg)
    {

        Thread th1 = new Search(1);
        Thread th2 = new Search(2);
        th1.start();
        th2.start();
        try { 
                    Thread.sleep (1000);
                    th1.join(); }
        catch (InterruptedException ie) { }
        try { th2.join(); }
        catch (InterruptedException ie) { }
        System.out.println("\n Потоки 1 и 2 окончены");
       int NumPrimes = a + b;
        System.out.println(" Количество простых чисел: " + NumPrimes);
    }
}
READ ALSO
Как создать свой progressbar? [требует правки]

Как создать свой progressbar? [требует правки]

Нужно создать свой круглый progressbar для таймера обратного отсчета в android-приложении

189
Краш диалога при передачи данных во фрагмент

Краш диалога при передачи данных во фрагмент

Пытаюсь передать данные по этому примеру и в результате приложение падает

253
Как понять этот кусок кода? [дубликат]

Как понять этот кусок кода? [дубликат]

На данный вопрос уже ответили:

167