UFSM > Informática > ELC117 - Paradigmas de Programação

Exercícios

  1. O programa OperacoesBancarias.java cria 2 threads que atualizam concorrentemente o saldo de uma conta bancária. Qual deve ser o resultado deste programa? Compile e execute o programa, observando se o resultado obtido é igual ao esperado.

  2. Modifique o programa do exercício acima de modo a esperar pelo término das threads criadas. Utilize o método join da classe Thread (lembre que este método exige o tratamento de uma exceção).

  3. O programa ExThreadsABC.java ilustra o uso de threads em Java. Esse programa não controla o acesso concorrente aos dados compartilhados. Para verificar o que pode dar errado, compile esse programa e execute-o diversas vezes, comparando os resultados das diferentes execuções.

    No Linux, você pode usar o script repete-execucao.sh, que executa um programa repetidamente e pára se os resultados de 2 execuções consecutivas forem diferentes. Exemplo de uso:
    bash ./repete-execucao.sh 50 java ExThreadsABC
    
  4. Corrija o programa do exercício anterior, usando um método synchronized (onde deve ser usada essa palavra-chave?).

Material de Apoio

Página criada em: Sun Jul 3 14:11:05 BRT 2011. Última atualização em: Tue Jul 5 09:54:48 2011. Autoria: Andrea Schwertner Charão.