вот код
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) ни когда не выполнится ведь?