Comandos estranhos

4 respostas
O

olá…

eu andei lendo sobre alguns comandos do java mas infelizmente isso td ta me confundindo muito…

alguem sb me dize pra q serve esses comandos…

  1. pra q serve o transient?
  • public transient int variavel=0;
  1. pra q serve o volatile?
  • public volatile int variavel=0;
  1. pra q serve o comando synchronized?

  2. pra q serve o comando native?

nenhum lugar q li explica com clareza esses comandos…se alguem pude me ajuda…deste ja agradesco

4 Respostas

M

da uma olhada em http://www.javacamp.org/javaI/modifier.html

BrunoBastosPJ

synchonized é quando você quer proteger o bloco, ou o método das outras threads, ou seja só uma thread por vez pode acessar esse bloco ou método.

native é quando você vai usar métodos nativos atravéz de JNI, como por exeplo, eu já trabalhei com uma impressora de cupom fiscal que trabalhava com uma dll. Para acessar essa dll atravez do java tive que usar métodos native.

os outros 2 não posso te explicar, mas tenho certeza que o google pode

[ ]'s

J

Um atributo transient não é serializado junto com o restante do objeto.
Ex.:

public class Teste implements Serializable{ private int x; private transient int y; }
Ao serializar um objeto dessa classe somente o x será serializado o y não!

Marca um atributo como sendo “volatil”, indica que ele pode ser modificado aleatoriamente por varios segmentos e que não há grandes garantias de seu valor, isso inibe algum tipo de cache que a JVM possa tentar fazer com o valor da variavel, advertindo que ele pode ser modificado a qualquer momento.

Para proteger o codigo de acesso simultaneo por varias Threads, um metodo que modifica o valor de um atributo por exemplo, é recomendavel que seja synchronized, pois se mais de um segmento acessa-lo ao mesmo tempo, não há garantias de qual será o valor quardado lá, então com synchronized, só um pode acessar, os outros tem que esperar.

Marca um determinado metodo como sendo nativo, ou seja, é escrito em alguma linguagem nativa, geralmente C++, aí você carrega uma biblioteca (.dll, .so, etc) que contem a implementação desse metodo, a tecnologia usada nisso chama-se JNI (Java Native Interface), seve basicamente para implementar em outras linguagens coisas que não podem ser feitas em Java ou que ficam melhores em outras linguagens, mas que devem ser usadas dentro dos seus programas Java, geralmente implementações de bem baixo nivel.

C

O transient é usado somente em atributos, ele impede que na serealizacao do objeto(se houver) o atributo que possui o transient nao vai ser incluido.

O volatile tambem usado somente em atributos…
Usando essa palavra reservada, tu diz a JVM “Estou consiente que se houver várias threads asseando essa variavel, ser a thread A acessar e modificar o seu valor, a thread B tb fazer isso, etc…” ele vai pertimitir… ou seja… c na sua thead a vc ler o valor, ai vir a thread b e modificado, dpois vir a thread a e ler o valor novamente… esse valor vai estar auterado, OK ?

OBS: so falando do native mais um pouco… é usando quando vc usar recursos nativos do SO em que a JVM esta rodando!

Criado 3 de julho de 2006
Ultima resposta 3 de jul. de 2006
Respostas 4
Participantes 5