sábado, 11 de agosto de 2012

Android, Dalvik, Threads, diferenças


Tenho feito alguns testes com processamento concorrente em Java.
Uns dos primeiros testes que se faz quando estudamos concorrência é o da visibilidade de uma variável modificada por duas threads.
Ou se usa sincronização ou uma variável volátil para que as threads tenham acesso ao valor mais atual da variável.
Curiosamente, nas versões Dalvik que tenho testado, o programa listado a seguir tem funcionado, quando uma versão equivalente (não Android) fica em loop no meu pc.

Testei nos seguintes aparelhos:
Celular: Sony XPERIA mini E10a Android 2.1
Tablet:  Sansung Galaxy GT-P6210 Android 3.2
Tablet:  Motorola XOOM MZ604 Android 4.0.4

Obs: A variável "stopRequested" que uso para controlar o loop deveria ser volatile ou ser acessado via synchronized.


TesteThread04Activity.java



main.xml




Se alguém obter um resultado diferente gostaria de tomar conhecimento. Por favor, poste qual é o aparelho e a versão do Android.
Obrigado.

PS: Apesar de funcionar na maioria das vezes, está comprometido: não tem garantia que vai funcionar sempre.




Nenhum comentário:

Postar um comentário