вот код
package com.javarush.task.task17.task1709;
/*
Предложения
*/
public class Solution {
public static volatile int proposal = 0;
public static void main(String[] args) {
new AcceptProposal().start();
new MakeProposal().start();
}
public static class MakeProposal extends Thread {
@Override
public void run() {
int thisProposal = proposal;
while (proposal < 10) {
System.out.println("Сделано предложение №" + (thisProposal + 1));
proposal = ++thisProposal;
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public static class AcceptProposal extends Thread {
@Override
public void run() {
int thisProposal = proposal;
while (thisProposal < 10) {
if (thisProposal != proposal) {
System.out.println("Принято предложение №" + proposal);
thisProposal = proposal;
}
}
}
}
}
Вопросы
1. Не понял почему срабатывает поток MakeProposal сперва всегда
2. Вообще не понимаю как работает код
int thisProposal = proposal;
while (thisProposal < 10) {
if (thisProposal != proposal) {
System.out.println("Принято предложение №" + proposal);
thisProposal = proposal;
}
}
цикл while паралельно работают у MakeProposal и AcceptProposal? Если proposal меняет своё значение от 0 до 9 и это значение присваивается к thisProposal и условие if (thisProposal != proposal) ни когда не выполнится ведь?