quinta-feira, 22 de novembro de 2012

Dica: Estudem Threads

Programação concorrente é de longe a área em que os programadores cometem mais erros.
Tenho o costume de ler códigos de terceiros. Para estudar, e aprender técnicas diferentes.
E quando se trata de concorrência, ninguém escapa imune. Desde os novatos aos mais experientes, cometem erros nessa área.
Tenho encontrado códigos inseguros, com problemas básicos de programação concorrente, até em livros!
O problema é que detectar os erros em testes é muito difícil, pois, os erros só aparecem em condições específicas, que não ocorrem a toda hora. Um erro em programação concorrente exige que várias condições ocorram ao mesmo tempo para se manifestar.
Se é difícil encontrar os erros testando, então como encontrá-los? Boa pergunta, não é?
A resposta é: Fazendo uma análise conceitual. Se o código não atende aos princípios de programação concorrente segura, então está comprometido: mais cedo ou mais tarde, vai dar problema!

Abraços!

Meus estudos

Ultimamente não tenho tido muito tempo para me dedicar aos estudos.
Os assuntos que estou interessado no momento são os que seguem:


Processamento concorrente
 No Android, usar Threads, não é uma opção. É obrigatório.
 Então continuo estudando programação concorrente em Java.

Persistência de Dados
 SqLite e ContentProvider
 Dois assuntos que estou tentando me aprofundar.
 Se alguém souber de algum material sobre acesso concorrente a DB no Android, agradeço indicações.

Abraços

terça-feira, 20 de novembro de 2012

Singleton 2

Neste post sobre Singleton testei um exemplo que não era thread-safe, ou seja, não era para ser utilizado em uma aplicação multi-thread.

Segue abaixo dois modelos para uso concorrente.








Devo lembrar aos que forem usar um Singleton, que os dados estão na memória, então são dados voláteis.
Tenho visto algumas discussões sobre "perda" de dados dos Singletons.
Isso ocorre, por exemplo, quando uma app fica em background e o Android encerrar a app em caso de necessidade.
Minha opinião sobre esse fato é que estão querendo mais do que o recurso pode oferecer! Afinal, se necessitam dos dados em qualquer situação, persistam os dados, nunca deixá-los ficar somente na memória.

Abraços