Threads em SCJP  XML
Índice dos Fóruns » Certificação Java
Autor Mensagem
marcosalex
GUJ Expert
[Avatar]

Membro desde: 20/02/2008 12:32:59
Mensagens: 3370
Online

"

This message was edited 1 time. Last update was at 07/07/2009 09:23:52

[Yahoo!] aim icon [ICQ]
g4j
GUJ Ranger
[Avatar]

Membro desde: 02/05/2007 14:32:03
Mensagens: 817
Localização: Curitiba
Offline

Difícil saber exatamente o peso, acredito que as questões sejam aleatórias, podendo ou não cair mais de threads...
Quando se diz que "pesa" mais, talvez seja porque threads não são muito utlizadas no dia a dia ou no trabalho, sendo incomum praticar sempre o desenvolvimento com threads.


Gerson Luiz Chagas

SCJP 5.0
SCWCD 5.0

diegosantiviago
JavaGuru

Membro desde: 14/12/2008 11:53:44
Mensagens: 221
Localização: BR
Offline

Se você sentiu dificuldade nesses tópicos, vale a pena revisá-los antes de ir fazer a prova! Serialização e Threads se tornam simples à partir do momento que você codifica alguns programas para analisar a diferença entre eles. No caso de serialização, tudo se complica quando a classe mãe não implementa a interface Serializable, pois o construtor será chamado.

SCJA, SCJP, SCBCD, SCEA (I), IBM SOA, ITIL v3
[Email] [WWW] [MSN]
Jeferson_Manetti
JavaTeenager
[Avatar]

Membro desde: 16/07/2008 15:28:29
Mensagens: 191
Offline

olá...

aproveitando o topico do amigo....

parece q Thread continua sendo o pesadelo segundo amigo meu q fez a prova scjp 6 a poucos dias.... eu fico em duvida se oq tem no livro da Katty eo sufuciente pra passar nesse topico...

portanto queria saber se alguem conhece algum tutorial que explique melhor esse "pesadelo" de Thread XD

flw...

SCJP 6
SCWCD 5
victorwss
JWizard
[Avatar]

Membro desde: 18/12/2007 14:46:00
Mensagens: 2409
Localização: São Paulo - SP
Offline

A maioria dos candidatos diz que tem dificuldades em Threads e que é aí que perdem mais pontos. Mas não posso dizer muito porque sou uma exceção: Gabaritei Threads mas fiz só 72% em OO.

Boas partes das pegadinhas de Threads tem a ver com condições de corrida e deadlocks. Para achar condições de corrida, tente procurar qual que é o pior ponto possível para uma Thread ser interrompida e enquanto ela está parada alguma variável de valor crítico mudar, lembrando que as operações provavelmente não são atômicas. por exemplo:

Por exemplo, embora seja extremamente improvável que este código imprima "b", isso pode acontecer se a Thread for interrompida na metade da avaliação da condição do if e o atributo x mudar enquanto isso. Basta procurar o pior ponto possível para a Thread ser interrompida.

Outra coisa importante, é entender o synchronized direitinho. Basta vê-lo como uma "reserva":

A Thread, para entrar no bloco synchronized tem que ser a "dona" de foo. Cada objeto só tem um único dono por vez. Quando a Thread vai entrar no bloco synchronized e alguma outra já é dona do objeto foo, a Thread pára até que a dona do foo o largue. Se tiver 50 threads esperando para entrar no synchronized, e a dona do foo o largar, qualquer uma das threads que estiverem esperando pode ser premiada e receber a posse do foo (ou seja, elas não fazem fila, sai no sorteio).
Métodos synchronized são synthatic sugar apenas:
É o mesmo queEÉ o mesmo que

Aprendendo isso, sem nenhuma dúvida, você pode ir dar uma olhada em wait, notify e notifyAll.

Victor Williams Stafusa da Silva

Bacharel em Ciência da Computação - UFMT // Especialista em Desenvolvimento Java - CEFET/MT // Doutorando em Ciência da Computação - IME-USP
SCJP 6.0 - 19/12/2007 - PASS - 88% // SCWCD 5 - 17/05/2008 - PASS - 79% // SCJA - 09/09/2008 - PASS - 96% // SCSNI - 30/06/2009 - PASS - 68% // SCBCD 5 - 31/05/2010 - PASS - 95%
Próximos: SCJD (encalhado com o projeto), SCEA parte I (estudando). Algum dia desses: SCMAD, OCA, SCEA e SCDJWS.

Computação: uma ciência holística e esotérica!
E então veio Deus a terra e disse aos homens: Não dividireis por zero.
XML is a giant step in no direction at all. (Erik Naggum)
Arquitetura de sistemas: Eu prefiro ser essa metamorfose ambulante do que ter aquela velha opinião formada sobre tudo.
Diga não as drogas: Não use java.util.Vector.
Cuidado: Este usuário pode ter temperamento agressivo.

Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.
I am the maniac serial killer that knows where you live who will maintain your code.


É impossível falar de CMMI (Capability Maturity Model Integration) sem saber o que é CIMM (Capability Im-Maturity Model).


Se você escreve "concerteza", "concerteza" você andou matando aulas de português.
[MSN]
maior_abandonado
JWizard
[Avatar]

Membro desde: 03/09/2007 11:30:08
Mensagens: 2693
Localização: sp
Online

eu tb estou estudando, comprei o livro da kathy um pouco depois do voucher nessa ultima promoção da sun... terminei as perguntas de thread hoje no trem... até que não achei tão dificil assim...

threads tem certa fama de quebrar o pessoal, eu tive mais dificuldade mesmo no capitulo de generics (que só uso arraylist no dia a dia), e no capitulo que tem IO, serialização, datas e internacionalização, que ao menos os ultimos requisitos eu uso pouco tb...

uma dica para ver no q q o pessoal se ferra mais é pesquisando isso aqui no forum, quando o pessoal cria esses tópicos eles costumam colocar os scores... mais eu ainda acho que isso varia de pessoa pra pessoa....

This message was edited 1 time. Last update was at 22/12/2008 13:01:41


espero ter ajudado...

falando nisso, caso seu problema tenha sido resolvido, edite o seu primeiro post e coloque um [RESOLVIDO] no titulo do tópico.
Jeferson_Manetti
JavaTeenager
[Avatar]

Membro desde: 16/07/2008 15:28:29
Mensagens: 191
Offline

valeu victorwss otima explicação ^^

todo mundo fala q thread e o terror... mas todo simulado q faço, vejo que não cai tanta pergunta assim sobre thread... por isso fico meio assim... ate mesmo nos tutorial e no livro da katty não parece ser tão sinistro assim...
se ficar so nisso da pra levar legal XD

mais gostei... se alguem mais quiser esclarecer um pouco mias sobre thread e quais as pegadinhas do exame ficaria feliz ^^

vlw t+




SCJP 6
SCWCD 5
diegosantiviago
JavaGuru

Membro desde: 14/12/2008 11:53:44
Mensagens: 221
Localização: BR
Offline

Poisé, fiz 100% em Threads, e 70% em Generics. O resto foi entre 90% e 100%.
No meu caso, eu recomendaria estudar Generics! hahaha!

SCJA, SCJP, SCBCD, SCEA (I), IBM SOA, ITIL v3
[Email] [WWW] [MSN]
victorwss
JWizard
[Avatar]

Membro desde: 18/12/2007 14:46:00
Mensagens: 2409
Localização: São Paulo - SP
Offline

Jeferson_Manetti wrote:...


Cara, tem mais de um ano que eu fiz a prova e lembro pouca coisa das pegadinhas. Expremi bastante o meu cérebro e consegui tirar isso:

1. A maior parte das perguntas de Thread pedem para você dizer quais são as possíveis respostas que um programa com duas ou três Threads pode fornecer. Esse tipo de questão, eu recomendo tentar resolver "de trás para frente": Pegue uma alternativa e a analise. Em que pontos as threads poderiam ser interrompidas para resultar naquela saída? Se não houver nenhum conjunto de pontos possíveis, então a alternativa é falsa. Mas olhe duas vezes isso para ter certeza.

2. Algumas perguntas que envolvem Threads pedem para você dizer qual que é a saída (uma só alternativa). Normalmente não é possível determinar-se a saída (ou seja vai ter uma alternativa dizendo que não dá para se saber). MAS, em alguns casos, apesar de haver várias Threads, o resultado acaba sendo sempre o mesmo, portanto é importante prestar atenção. Há algumas que pode simplesmente não compilar.

3. Há algumas questões que podem pedir acerca da possibilidade de ocorrer deadlock. Aí você tem que ser pessimista e procurar o pior caso possível: quais monitores cada Thread pode obter de tal forme que elas entrem em deadlock?

E também:
4. Espere pegadinhas acerca de notify() versus notifyAll().
5. Pegadinhas relativas a Thread.run() versus Thread.start().
6. Preste atenção a coisas como wait(), notify() ou notifyAll() fora de blocos synchronized (isso dá IllegalMonitorStateException).
7. Você vai ter um NullPointerException se usar uma variável com valor null no bloco synchronized.
8. Preste atenção a chamar wait(), notify() ou notifyAll() no objeto errado. Por exemplo:

9. É possível se ter confusão entre Thread.sleep e Thread.wait (que na verdade trata-se de Object.wait).
10. Preste atenção em wait() sem notify() nem notifyAll().
11. Preste atenção em notify() ou notifyAll() sem wait().
12. Pegadinhas do tipo "criar uma subclasse Foobar de Thread, sobrescrever o método run(), e instanciar Foobar passando um Runnable".
13. Se você ver uma instância de Runnable, ou alguma subclasse de Thread, preste atenção na assinatura do método run(). Não deve haver nenhum parâmetro!
14. Atenção se houver um wait() dentro de um bloco synchronized aninhado em outro bloco synchronized.
15. Muita atenção com a possibilidade de que o notify() aconteça antes do wait(). Isso é um tipo de pegadinha difícil de perceber, que envolve vários conceitos de Threads de uma só vez ao mesmo tempo (condição de corrida, deadlock e wait+notify)!
16. Eu lembro de ter aparecido pelo menos uma questão com algo acerca de Thread.yield(). Mas realmente não lembro o que era. Thread.join() também caiu.

Friso bastante atenção em wait, notify e notifyAll porque essas são as questões mais difíceis do tópico Threads, e também um dos tópicos menos entendidos pelos candidatos. Também digo para não confiarem em Thread.sleep. Se duas threads saem ao mesmo tempo em uma corrida, mas uma delas pára em um Thraed.sleep(50000), isso não significa que você pode confiar de que a outra Thread já terá terminado.

This message was edited 3 times. Last update was at 22/12/2008 23:45:48


Victor Williams Stafusa da Silva

Bacharel em Ciência da Computação - UFMT // Especialista em Desenvolvimento Java - CEFET/MT // Doutorando em Ciência da Computação - IME-USP
SCJP 6.0 - 19/12/2007 - PASS - 88% // SCWCD 5 - 17/05/2008 - PASS - 79% // SCJA - 09/09/2008 - PASS - 96% // SCSNI - 30/06/2009 - PASS - 68% // SCBCD 5 - 31/05/2010 - PASS - 95%
Próximos: SCJD (encalhado com o projeto), SCEA parte I (estudando). Algum dia desses: SCMAD, OCA, SCEA e SCDJWS.

Computação: uma ciência holística e esotérica!
E então veio Deus a terra e disse aos homens: Não dividireis por zero.
XML is a giant step in no direction at all. (Erik Naggum)
Arquitetura de sistemas: Eu prefiro ser essa metamorfose ambulante do que ter aquela velha opinião formada sobre tudo.
Diga não as drogas: Não use java.util.Vector.
Cuidado: Este usuário pode ter temperamento agressivo.

Always code as if the person who will maintain your code is a maniac serial killer that knows where you live.
I am the maniac serial killer that knows where you live who will maintain your code.


É impossível falar de CMMI (Capability Maturity Model Integration) sem saber o que é CIMM (Capability Im-Maturity Model).


Se você escreve "concerteza", "concerteza" você andou matando aulas de português.
[MSN]
Jeferson_Manetti
JavaTeenager
[Avatar]

Membro desde: 16/07/2008 15:28:29
Mensagens: 191
Offline

pow... era disso q eu estava falando....

valeu cara... brigadaum ajudou bastante

e meu realmente não e facil... e muito conceito e varias pegadinhas diferentes =(

mais a prova inteira e assim mesmo... kkkk

mais uma vez agradeço a ajuda e que este topico fique de ajuda para outras pessoas q tenham a mema duvida q eu tive...

abs.

Jeferson

This message was edited 1 time. Last update was at 23/12/2008 07:34:44


SCJP 6
SCWCD 5
LPJava
GUJ Hacker

Membro desde: 18/04/2006 12:50:23
Mensagens: 5523
Localização: Bahia/Porto Alegre
Offline

threads e serializacao foram os assuntos mais facil que achei no exame, vc tem está ligado nas regras de threads e analisar a questao, o exame que saber se vc sabe a regra de threads e segurar vc que com threads nada eh garantido.. sempre ele vai estar testando isso.. serializacao se nao me engano apareceu apenas 3 questoes bem bobas mais simples que aquelas do livro da kathy e threads foram 5 nao passou disso.. o exame eh todo em cima de OO, fundamentos, exececoes, boa parte de API, generics tb isso ai que tem grande peso, o mais forte ainda eh OO.

ponto importante: leia o objetivo do exame na pagina da sun, a ideia certificar um cara fera em threads, mas q ele tenha conheicmento sobre, ate pq threads dar para fazer um livro sobre. E nao sei pq o pessoal tem tanto receio..

flw! e boa sorte!

Sun Certified Java Programmer 5.0
Blog:http://www.camilolopes.com
Twitter:www.twitter.com/camilolope
Linkedin: http://br.linkedin.com/in/camilolopes
Curso online OCPJP: http://pro.imasters.com.br/online/cursos/preparatorio-para-certificacao-java-ocjp
Autor livro Guia SCJP & JEE c/ Frameworks: http://blog.camilolopes.com.br/livrosrevistaspalestras/
[WWW]
 
Índice dos Fóruns » Certificação Java
Ir para:   
Powered by JForum 2.1.8 © JForum Team