cara eu acho q vai imprimir STATIC1, depois de no mínimo 1 segundo (Esse tempo não pode ser determinado com certeza, o q se pode afirmar é q no minimo a Thread main dorme 1 segundo, depois disso cabe ao escalonador decidir qdo da uma CPU pra essa Thread) daí imprimi STATIC2, logo em seguinda MAIN1, dorme mais 1 seg. e imprime MAIN2.
é isso? :oops:
J
javaquestPJ
me obriguei a testar…
casca isso… primeiro pq mesmo a classe Teste ser estatica ela nao eh comentada no metodo main, mesmo assim ela eh a primeira executar, nao entendi nada… mas rodou e sai isso mesmo q o fabio postou
8O
F
fabiostbPJ
“javaquest”:
me obriguei a testar…
casca isso… primeiro pq mesmo a classe Teste ser estatica ela nao eh comentada no metodo main, mesmo assim ela eh a primeira executar, nao entendi nada… mas rodou e sai isso mesmo q o fabio postou
8O
cara agora foi eu q boiei na sua duvida, mas vou tentar esclarecer o q entendi q vc n entendeu, hehehe!
primeiro) a classe não é estática
segundo) o q ela tem de estático fora o metodo main é um bloco, um bloco estático, que é perfeitamente admissivel em qualquer parte (OUTER) da classe, pode vim antes ou depois do método main.
terceiro) um bloco estático é executado uma vez, somente uma vez, assim que a classe é carregada em memoria, não necessariamente se foi ou ñ instanciada, o fato é q ocorre antes de tudo!!
compliquei?!
S
shadowPJ
O que acontece é que a classe n eh instanceada em momento algum…,
se ela fosse ai que seus metodos staticos iriam executar!!!
como n é somento o que tem dentro do metodo main será executado!!! :yyeah: :roto:
quer pipoca?
J
javaquestPJ
nao, nao complicou, pelo contrario exclareceu Fabio valew.
eu realmente nao conhecia essa propriedade do bloco estatico, ele executar antes de qualquer chamada, mesmo de um outro metodo estatico como System.out.println(“MAIN1”) da propria main sem ao menos ser citado; isso q foi confuso…
:razz:
F
FelipePJ
fabiostb acertou em cheio!
qnto ao tempo do Thread.sleep, ele realmente nao eh preciso, mas a intensao de eu ter colocado lah nao eh saber q nao eh preciso, e sim pq a intensao da questao era ver se vcs sabiam se os blocos estaticos era executados antes ou simutaneamente ao metodo main
S
SchuenemannPJ
Por que não é preciso? Só tem uma thread (a main).
Considerando só o cenário da JVM, claro.
F
fabiostbPJ
“Schuenemann”:
Por que não é preciso? Só tem uma thread (a main).
Considerando só o cenário da JVM, claro.
acho q o Felipe quis dizer q mesmo se tirassemos o sleep o resultado seria o mesmo (sem a dormidinha), e é esse o objetivo da questao: saber se vc sabe q o bloco static executa antes do main. :???:
uma coisa q Felipe esqueceu de mencionar é q o bloco try/cath e o sleep nesse questão serve para direcionar a atenção do caba pra uma casca de banana :lol: hehehehe