Os monitores apresentam uma propriedade importante que os tornam úteis para realizar a exclusão mútua, assim como os semáforos e mutexes: somente um processo pode estar ativo em um monitor em um dado momento.

No caso do Java, todo objeto criado pela linguagem possui um monitor intrínseco que pode ser acessado/utilizado pelo uso da palavra reservada synchronized. Além disso, a classe Object (a classe cósmica do Java, aquela que é o Pai de todas!) possui três métodos que são usados com esses monitores intrínsecos:

O uso desta palavra reservada e desses métodos é muito comum em códigos Java que fazem uso de multithreading.

Observe, contudo, que os exemplos apresentados a seguir irão um pouco além do uso destes recursos próprios da linguagem Java, demonstrando em um nível maior de detalhes, como funcionam um monitor e como você poderá construir um, caso julgue necessário.

Não se esqueça de que tal programação é extremamente peculiar e deve ser feita com muito zelo, pois erros na ordem de escrita das instruções de um monitor podem por tudo a perder provocando erros graves como deadlock, starvation ou mesmo comportamentos imprevisíveis e irreprodutíveis.

Deste modo, um monitor pode ser representado como um tipo de dado abstrato com suas operações e dados, ou seja, no caso da linguagem Java será representado por uma classe com seus métodos e atributos.

Copyright © 2016 AIEC.