I know the solution but can somebody explain what happends when I don`t use volatile here? Why is it important to use it here?
package com.codegym.task.task17.task1709;
/*
Proposals
*/
public class Solution {
public static 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("Made Proposal No. " + (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("Accepted Proposal No." + proposal);
thisProposal = proposal;
}
}
}
}
}