//Behold, the time is coming, yes, and has now come, that you will be scattered, //everyone to his own place, and you will leave me alone. Yet I am not alone, because the Father is with me. (John 16:32) package com.javarush.task.task17.task1709; /* Предложения */ public class Solution { public volatile 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("Сделано предложение №" + (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; } } } } } /* Предложения Не используя synchronized сделай так, чтобы количество сделанных и принятых предложений было одинаковым. Требования: 1. Класс Solution должен содержать нить MakeProposal. 2. Класс Solution должен содержать нить AcceptProposal. 3. Класс Solution должен содержать публичную статическую переменную int proposal. 4. Программа не должна содержать synchronized методов или synchronized блоков. 5. Переменная int proposal не должна находится в локальном кэше. package com.javarush.task.task17.task1709; * Предложения * 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("Сделано предложение №" + (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; } } } } } */