2.2 - Classe Produtor.java

                
package br.aiec.multithread.comum;

import java.util.Random;

/**
 * Essa classe produz números de 1 a 10 que serão gravados no buffer
 * que representa a variável de memória compartilhada.
 * 
 * Observe que a variável local somatório existe apenas para fins didáticos
 * e como uma tentativa, amadora e inicial, de medir a integridade no acesso ao buffer.
 * Devido a sua forma simples, e suficiente para nossos propósitos, a mesma será utilizada.
 *  
 * Uma medição adequada extrapola o conteúdo desta disciplina e, por ora, da forma
 * em que se apresenta, a variável local somatório será considerada suficiente para
 * os propósitos de demonstração.
 * 
 * 
 *  
 *
 */

public class Produtor implements Runnable {

    private IBuffer buffer;
    
    public Produtor(IBuffer buffer) {
        this.buffer = buffer;
    }   
    
    @Override
    public void run() {
        int somatorio = 0;
        
        for(int i = 1; i < 11; i++){
            somatorio += i;
            buffer.gravar(i);
            esperaCronometrada();
        }
        
        System.out.println("Somatorio de valores GRAVADOS: " + somatorio);
    }



    /**
        * Esse método tem por finalidade potencializar a aleatoriedade do
        * escalonamento. Ou seja,
        * apenas tornar visível à percepção humana o procedimento de alternância de
        * threads/processos
        * (multiprogramação) em um computador.
        */
    private void esperaCronometrada() {
        long aleatorio = (long)Math.random() * 5;
        try {
            Thread.sleep(aleatorio);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }       
    }
}

            
Copyright © 2016 AIEC.