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!
quinta-feira, 22 de novembro de 2012
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.
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
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
Assinar:
Postagens (Atom)