Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.javarush.test.level17.lesson10.home10;
- /* Посчитаем
- 1. Сделай так, чтобы результат успел посчитаться для всех элементов массива values НЕ используя Thread.sleep
- 2. Исправь synchronized блок так, чтобы массив values заполнился значением 1
- */
- public class Solution {
- public static void main(String[] args) throws InterruptedException {
- Counter counter1 = new Counter();
- Counter counter2 = new Counter();
- Counter counter3 = new Counter();
- Counter counter4 = new Counter();
- counter1.start();
- counter1.join();
- counter2.start();
- counter2.join();
- counter3.start();
- counter3.join();
- counter4.start();
- counter4.join();
- for (int i = 1; i <= 100; i++) {
- if (values[i] != 1) {
- System.out.println("Массив values содержит элементы неравные 1");
- break;
- }
- }
- for (int i = 0; i< values.length; i++) {
- System.out.println(values[i]);
- }
- }
- public static Integer count = 0;
- public static int[] values = new int[105];
- static {
- for (int i = 0; i < 105; i++) {
- values[i] = 0;
- }
- }
- public static void incrementCount() {
- count++;
- }
- public static int getCount() {
- return count;
- }
- public static class Counter extends Thread {
- @Override
- public void run() {
- do {
- synchronized (Counter.class) {
- incrementCount();
- values[getCount()]++;
- }
- try {
- Thread.sleep(1);
- } catch (InterruptedException e) {
- }
- } while (getCount() < 100);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement