возник такой вопрос Почему у меня поток, который я передаю в классе CalculateThread не возобновляет свою работу, когда метод run() выполнился.
public class CalculateThread extends Thread {
CalculateThread(Thread a) {
synchronized (a) {
try {
a.wait();
}
catch(InterruptedException e){
e.printStackTrace();
}
}
}
public void run(){
synchronized (Main.a){
Main.a.sqrtX = Main.a.x * Main.a.x;
}
synchronized (this){
notify();
}
}
}
Вот класс объекта, который я передаю в сам поток CalculateThread
public class MainThread extends Thread {
public void run(){
Main.a = new MyObject();
int key;
do {
System.out.println("1 - Ввести число.");
System.out.println("2 - Получить квадрат числа.");
System.out.println("0 - Выход.");
key = Main.EnterNumber();
switch(key){
case 1:
System.out.println("Введите число: ");
Main.a.x = Main.EnterNumber();
break;
case 2:
CalculateThread obj = new CalculateThread(this);
obj.start();
System.out.println("Квадрат числа " + Main.a.x + " равняется " + Main.a.sqrtX);
break;
case 0:
break;
default:
System.out.println("Выберите одно из списка.");
break;
}
}while (key != 0);
}
}
И сам объект MyObject, над которым у меня проводятся вычисления
public class MyObject {
int x;
int sqrtX;
MyObject(){
x = 0;
sqrtX = 0;
}
MyObject(int x){
this.x = x;
sqrtX = 0;
}
}
Буду благодарен за любой совет, т.к. только начал разбираться в потоках.
В конструкторе класса CalculateThread вы останавливаете поток MainThread до того, как выполняется запуск этого потока в MainThread obj.start(); Так что поток не запускается и notify не выполняется. Вообще структура классов странная.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Некорректная работа InputProcessor на андроиде версии выше 51 (судя по проведенным тестам)
Пока разбираюсь именно с Jersey, поэтому не предлагайте другие библиотеки
Почему после в консоли после компиляции java файла1)Командой javac Helloworld