Você está na página 1de 23

Artigo GUJ.com.

br

Guia para Consulta - Java


Resumo da API Java

Autor Tatiana Franciely da Silva (tati.franci.silva@gmail.com): formada como Bacharel em Anlise de Sistemas pela Universidade Estadual do Centro-Oeste (Unicentro), especializada em Desenvolvimento Web pela PUC-PR e certificada em programao Java pela Sun. Trabalha com anlise e programao desde 2002, utilizando a linguagem Java e Oracle (PL/SQL).

Gravata
Esse artigo tem como intuito passar o conhecimento da API Java, de um modo resumido. O alvo principal servir como um guia de consulta para todos aqueles que utilizam o Java. Espero que esse documento seja to til como foi para mim.

Introduo Quando dei incio ao estudo para minha certificao comecei a fazer um resumo com todos os captulos necessrios que eu precisava conhecer e memorizar. Como no queria ficar toda hora consultando o livro ou o site, fiz esse documento para facilitar. Dediquei uma fase dos estudos totalmente aos simulados, onde esse resumo me ajudou a tirar dvidas rapidamente. Meu intuito dividir esse documento com aqueles que queiram estudar sobre Java (seja certificao ou apenas aprendizagem). Ressalto um detalhe a esse resumo reutilizando as palavras do Kuesley Fernandes em seu site (citado quadro Para Saber Mais): Algumas referncias aqui citadas, podero tambm ser encontradas no livro Java 2 Certificao Sun para Programador & Desenvolvedor da Kathy Sierra e Bert Bates por isso, gostaria de deixar bem claro que esse contedo no foi plagiado, simplesmente quero compartilhar com outras pessoas a experincia que estou adquirindo, atravs do estudo dirigido pela obra de Kathy e Bert. Como a citao acima, destaco que o documento no tem intuito de copiar ou plagiar nenhum autor, e sim, compartilhar e ajudar outras pessoas que gostariam de obter conhecimento sobre o Java.

1. Fundamentos da Linguagem

tipo byte short int long

bits 8 16 32 64

frmula -(2)^7 2^7 -1 -(2)^15 2^15 - 1 -(2)^31 2^31-1 -(2)^63 2^63-1

faixa -128 ~ +127 -32768 a +32767 -2147483648 a +2147483647 -9223372036854775808 a +9223372036854775807

char

16

2^16-1

65535

* char

- caracter Unicode de 16 bits (sem sinal).

Palavras Chaves
byte float short public static private long protected char int boolean abstract double final

strictfp

transient

synchronized

native

void

class

interface

implements

extends

const

else

do

default

switch

case

break

continue

assert

if

goto

throws

No esquecer: null, false e true so valores literais!

Valores de constantes para o Integer: !Integer.MIN_VALUE == 0x80000000; !Integer.MAX_VALUE == 0x7FFFFFFF;

2. Declarao e Controle de Acessos

A tabela abaixo mostra os modificadores e onde podem ser usados:

modificador padro public protected private static final abstract strictfp synchronized transient native volatile

classe sim sim no no no sim sim sim no no no no

mtodo sim sim sim sim sim sim sim sim sim no sim no

var instncia sim sim sim sim sim sim no no no sim no sim

var local no no no no no sim no no no no no no

Definies de alguns modificadores: " " " " volatile: Quando uma varivel de instncia com esse modificador alterada, a thread dever sincronizar sua cpia com a cpia principal. transient: Esse modificador indica a JVM para no esquentar a cabea com as variveis transient quando for realizar a serializao de um objeto. strictfp: Define que os valores de ponto flutuante do mtodo devem seguir o padro I33754. native: Define que a implementao do mtodo foi escrita em uma linguagem nativa com por exemplo C ou C++.

Consideraes: Modificadores de acesso - Os modificadores de acesso: (padro, public, private e protected) no podem NUNCA ser combinados.

Mtodos - Nunca poder ser definido como (transient, volative) - Um mtodo nunca poder ser abstract e final - Um mtodo nunca poder ser abstract e strictfp - Um mtodo nunca poder ser abstract e native - Um mtodo nunca poder ser abstract e synchronized - Um mtodo nunca poder ser abstract e private - Um mtodo final nunca poder ser sobreposto - Um mtodo abstrato nunca poder ser implementado - Se um mtodo for abstrato a classe tambm ser

Varivel de Instncia - Pode ter qualquer um dos quatro modificadores de acesso - Podem ser (volative, transient, final, static) - No pode ser (abstract, native, synchronized, strictfp)

Interfaces - Uma interface nunca herda uma classe - Uma classe nunca herda uma interface - Uma interface nunca implementa outra interface - Uma classe nunca implementa outra classe - Uma interface pode herdar vrias interfaces - Uma varivel de uma interface sempre ser implicitamente: (public, final, static) - Um mtodo de uma interface sempre ser (public, abstract)

Lembre-se da Interface: java.lang.Runnable. Ela s tem um mtodo: public void run();

3. Operadores e atribuies

Unary operators are: ++ -- + - ! ~ () Arithmetic operators are: * / % + Shift operators are: << >> >>> Comparison operators are: < <= > >= instanceof == != Bitwise operators are: & ^ | Short-circuit operators are: && || Conditional operators are: ?: Assignment operators are: = "op=" Operador Condicional variable = boolean expression ? value to assign if boolean expression is true : value to assign if boolean expression is false.

Deslocamento de Bits >> deslocamento de bits direita com sinal

Frmula: valor desejado dividido por 2 elevados a x (onde x a quantidade de bits a deslocar)

<<

deslocamento de bits esquerda com sinal

Frmula: valor desejado multiplicado por 2 elevado a x (onde x a quantidade de bits a deslocar)

>>> deslocamento de bits direita sem sinal sinal no mantido, todo numero deslocado com esse sinal (mesmo que seja um nmero negativo) fica positivo Exceto em um caso particular: Deslocar uma quantidade superior capacidade do tamanho. Por exemplo, deslocar 35 bits em uma varivel do tipo int que comporta 32. O compilador far diviso entre a 35 quantidade de bits a deslocar e 32 que a capacidade do tipo em questo e o resto dessa diviso ser a quantidade deslocada, nesse caso: 3 byte y = (byte) 8 >> 12; 12 % 8 = 4 (quatro bits a deslocar) Se for um mltiplo de 8 (no caso do tipo byte), por exemplo, 16 ou 32 em um tipo byte, no ser deslocado nenhum pois o resto da diviso ser 0 Portanto nem sempre o deslocamento de bits com o operador ( >>> ) ser positivo. Deslocar 32 bits ou 64 bits em um tipo int que armazena o valor -300 e ter o mesmo valor -300.

Operadores Bit a Bit & e

| ou inclusivo ^ u exclusivo

Operador & O operador & compara dois bits e ser um se ambos o forem.

Exemplo: int x = 10 & 9 Resultado: 8 em decimal.

1010 1001 -----1000

Operador | ou inclusivo Exemplo: int x = 10 | 9 Resultado: 11

1010 1001 -----1011

Operador ^ ou exclusivo Exemplo: int x = 10 ^ 9 Resultado: 3

1010 1001 -----0011

4. Controle de fluxo, excees e assertivas

Assertions

Assertivas - uso incorreto/inapropriado 1) Nunca manipula um AssertionError No use um catch e manipula um erro de assertiva 2) No use assertiva para validar argumentos em mtodos pblicos Voc no pode garantir nada em mtodos pblico, portanto usar assertiva nesse caso, no uma boa prtica 3) No use assertiva para validar argumento da linha de comando Isso uma particularidade de um mtodo pblico, mas segue a mesma regra 4) No use assertivas que possam causar efeitos colaterais Voc no pode garantia que as assertivas sempre sero executadas, portanto o seu programa deve executar independentemente das assertivas, e nunca de forma diferente simplesmente porque as assertivas foram ativadas.

Uso Apropriado/Correto 1) Use assertiva para validar argumentos em mtodos privados Como a visibilidade privada, voc consegue detectar se algum est fazendo algo errado. 2) Use assertiva sem condio em um bloco que presuma que nunca seja alcanado. Se voc tem um bloco que nunca seria alcanado, voc pode usar uma assert false, pois assim saberia se em algum momento esse bloco est sendo alcanado. 3) Lanar um AssertionError explicitamente 4) Se um bloco switch no tiver uma instruo default, adicionar uma assertiva considerada uma boa prtica

!Habilitar assertion: o o java -ea java -enableassertion

!Desabilitar assertion: o o java -da java -disableassertion

!Habilitar assertion para um determinado pacote: o java -ea:nome_pacote

!Habilita assertion em mbito geral e desabilita nas classes do sistema: o java -ea -das

!Habilitar assertion nas classes do sistema: o o java -esa java -enablesystemassertions

Como os assertions no esto sempre ligados no sistema, eles no devem ser usados para validar parmetros de mtodos pblicos. Uma apropriada exceo de runtime dever aparecer como: IllegalArgumentException, IndexOutOfBoundsException, ou NullPointerException.

No entanto, um assertion pode ser usado para validar parmetros de mtodos no pblicos. Uma expresso de assertion pode ser usada para checar: Uma constante interna: algo que o programador assume que dever ser verdadeira em um particular ponto do programa. Uma constante de classe: algo que deve ser verdadeiro sobre cada instncia de classe. Um constante fluxo de controle: verifica se um fluxo nunca ir alcanar um ponto do programa.

5. Orientao a objetos, sobreposio e substituio, construtores e tipos de retorno

Modificando o acesso de um mtodo substitudo

Voc poder alterar a visibilidade de um mtodo substitudo, mas nunca para uma visibilidade inferior definida na superclasse, ou seja, se voc tiver um mtodo na superclasse com o modificador protected voc no poder substitu-lo por um mtodo com modificador private (mais restritivo), mas, por exemplo, para um mtodo pblico sem nenhum problema.

A ordem : private padro protected public

As seguintes classes override (sobrepem) ambos os mtodos equals e hashCode: java.lang.Byte java.lang.Integer java.util.Vector java.lang.String

A assinatura do mtodo o nome do mtodo e seus tipos de parmetros. O tipo do retorno no faz parte da assinatura. Um mtodo de instncia declarado na subclasse sobrepe um mtodo acessvel da superclasse com a mesma assinatura. Se um mtodo acessvel de uma superclasse for static, ento qualquer mtodo com a mesma assinatura na subclasse deve tambm ser static. Se o mtodo de uma superclasse publico, ento o mtodo sobreposto deve tambm ser pblico. Se for um mtodo da superclasse protected, ento o mtodo sobreposto deve ser protected ou pblico (conforme ordem citada acima). Para os modificadores synchronized, native e strictfp implementados, o programador os pode alterar livremente nas subclasses. Uma subclasse pode sobrepor uma implementao concreta de um mtodo com uma declarao de mtodo abstrato.

6. Java.Lang - a classe Math, String e Wrappers

Long -hashcode: retorna endereo hash -equals

Double ! doubleValue, floatValue, intValue, longValue, parseDouble

String Objetos String so inalterveis, porm as variveis de referncias no. Se uma nova String for criada e no for atribuda a nenhuma varivel de referncia, ela ficar perdida. Se voc redirecionar a referncia de uma String para outra String, o objeto String anterior poder ser perdido. A classe String final Mtodos da String -concat - Adiciona uma string outra, porm no altera a string em que o mtodo est sendo executado. -equalsIgnoreCase - Testa se uma string igual a outra ignorando a diferena entre letras maisculas e minsculas: -length - Obtm o tamanho da string. -replace - Substitui os caracteres de uma string. -substring - Extrai uma string de outra. -toLowerCase - Muda todas as letras que estiverem maisculas para letra minscula. -toUpperCase - Processo inverso do toLowerCase, ou seja, transforma em maiscula todas as letras que estiverem minsculas. -trim - Retira espaos das extremidades de uma string. -toString - retorna o valor da string. Como a classe String derivada de Object esse mtodo substitudo na classe String retornando o valor da String propriamente dita. -equals - compara o valor de uma string com outra informada em argumento.

StringBuffer Diferente da classe String, a classe StringBuffer pode sofrer alterao. Mtodos importantes -append - esse mtodo adiciona uma string ao StringBuffer -insert - insere uma string em um StringBuffer, comeando em 0 (zero) -reverse - inverte todos os caracteres da StringBuffer. -toString - retorna o valor do objeto StringBuffer, esse mtodo herdado de Object.

-equals - O mtodo equals da classe StringBuffer no substitudo, isso significa que ele no compara valores. Compara end memria. -hashcode baseado no endereo interno.

Java.lang.Math -abs: Retorna o valor absoluto de um argumento, veja suas assinaturas: public static int abs( int value ) public static long abs( long value ) public static float abs(float value ) public static double abs(double value )

O resultado sempre ser um nmero positivo a exceo de dois casos: Interger.MIN_VALUE ou Long.MIN_VALUE Integer.MIN_VALUE -> -2147483648 Long.MIN_VALUE -> -9223372036854775808 Operaes com tipos byte, short ou char, sero promovidos para int.

-ceil: Retorna o nmero "ponto flutuante inteiro" superior mais prximo. public static float ceil(float value) public static double ceil(double value)

-floor: Retorna o nmero ponto flutuante inteiro inferior mais prximo. public static float floor(float value) public static double floor(double value)

-max: Esse mtodo retorna o maior nmero entre dois informados, sua assinatura de mtodos : public static int max(int a, int b ) public static long max(long a, long b ) public static float max(float a, float b ) public static double max(double a, double b )

-min: Esse mtodo retorna o menor nmero entre dois informados, suas assinaturas so: public static int min(int a, int b ) public static long min(long a, long b ) public static float min(float a, float b ) public static double min(double a, double b )

-round: Arredonda um numero ponto flutuante recebido como argumento, veja suas assinaturas: public static int round(float a) public static long round(double a)

-random: O mtodo Math.random retorna um nmero aleatrio entre 0.0 e menor que 1.0. public static double random()

-sin: public static double sin(double a)

-cos : public static double cos(double a)

-tan: public static double tan(double a)

-sqrt: public static double sqrt(double a)

-toDegrees: Retorna um valor de um ngulo em graus, para isso voc deve passar um ngulo em radiano. public static double toDegrees(double a)

-toRadians: Retorna em radiano um ngulo informado em graus. public static double toRadians(double a)

Algumas observaes sobre a classe Math double x; float p_i = Float.POSITIVE_INFINITY; double n_i = Double.NEGATIVE_INFINITY; double n_a_n = Double.NaN; if ( n_a_n != n_a_n) System.out.println("NaN diferente de NaN"); // Ser ecoada, pois NaN no igual a nada inclusive a NaN if (Double.isNaN(n_a_n)) System.out.println(" um NaN"); // resultado: um NaN x = Math.sqrt(n_i); // Alerta geral ! ser atribudo NaN para x if (Double.isNaN(x)) System.out.println( "x um NaN"); // Resultado: x um NaN

System.out.println( 32 / 0 ); // Resultado: java.lang.ArithmeticException System.out.println( 32.0 / 0.0 ); // Resultado: Infinity System.out.println( -32.0 / 0.0 ); // Resultado: -Infinity System.out.println( 32.0 / -0.0 ); // Resultado: -Infinity System.out.println( -32.0 / -0 ); // Resultado: -Infinity System.out.println( 32.0 / -0 ); // Resultado: Infinity System.out.println( -32.0 / -0.0 ); // Resultado: Infinity

Quando o divisor e o dividendo forem nmeros inteiros: Se o divisor for 0, ser lanada uma exceo. Quando o divisor 0.0: SEMPRE HAVER A TROCA DE SINAIS Quando o divisor for 0: NUNCA HAVER A TROCA DE SINAIS, SEMPRE SER MANTIDO O SINAL DO DIVIDENDO. Quando o divisor for diferente de 0 e 0.0 SEMPRE HAVER JOGO DE SINAL

Toda operao envolvendo nmeros inteiro SEMPRE retornar um tipo int.

Duas constantes so definidas na classe java.lang.Math: Wrappers Todo tipo primitivo tem uma classe wrapper correspondente. Mtodos importantes java.lang.Math.PI - public static final double E 2.718281828459045d java.lang.Math.E - public static final double PI 3.141592653589793d

Classe Integer:

valueOf(): mtodo esttico. Integer pode converter nmeros em bases diferentes. Exceo java.lang.NumberFormatException. xxxValue(): no so mtodos estticos. parseXxx(): mtodo esttico. Exceo java.lang.NumberFormatException. toString().

Mtodos estticos nomeados

public static String toHexString(int i) public static String toBinaryString(int i) public static String toOctalString(int i) Classe Long: public static String toHexString(long i) public static String toBinaryString(long i) public static String toOctalString(long i)

Mtodos que lanam a exceo NumberFormatException - Todos os construtores das classes wrapper numricas - os mtodos estticos valueOf - os mtodos estticos toString de Integer e Long - os mtodos parseXxx

Mtodos estticos: valueOf e parseXXX valueOf: retorna instncia da classe. parseXxx e xxValue: retorna valor primitivo

7. Objetos e Conjuntos

Uma classe pode ser: " " ordenada - Uma classe ordenada se pode ser iterada pelos seus elementos em uma ordem especfica, atravs de um ndice ou por exemplo pela ordem de insero. classificada - Uma classe classificada, quando seus elementos esto classificados por algum critrio, como por exemplo, em ordem alfabtica, crescente ou cronolgica etc. Toda classe classificada ordenada, j uma classe ordenada pode no ser classificada.

List As classes que implementam a interface List, so ordenadas por meio de um ndice. Aceita elementos duplicados. ArrayList - uma estrutura de dados que tem com base um array. Array que pode ser alterado. -Acesso seqencial / aleatrio -Insero tambm extremamente rpida Vector - Tem as mesmas caractersticas de ArrayList, porm seus mtodos so sincronizados. Lembrar: o mtodo Vector.elements retorna um Enumeration. LinkedList - A diferena entre LinkedList e ArrayList que os elementos de LinkedList so duplamente encadeados entre si No h necessidade da realocao do array, visto que cada n tem uma referncia para seu sucessor e seu predecessor. a melhor implementao de FIFO (First In First Out).

Resumindo as listas - O que precisamos saber que o ndice em uma lista relevante, toda lista ordenada, ou seja, podemos iterar em uma ordem especifica, seja ela pela ordem de insero ou pela ordem do ndice. A no se esquea que no existe lista classificada !

Set A unicidade a caracterstica fundamental dessas classes sendo necessrio uma correta relao dos mtodos equals e hashCode para seu funcionamento. No aceita elementos duplicados HashSet - um conjunto no-ordenado e no-classificado, utiliza o cdigo hash do elemento que est sendo inserido para saber em qual depsito deve armazenar. Nunca use essa classe quando precisar de uma ordem na iterao. LinkedHashSet- conjunto ordenado e duplamente encadeado, podemos iterar pelos seus elementos em uma ordem. LinkedHashSet extends HashSet e implements Collection, Set, Cloneable e Serializable. TreeSet - essa uma das duas classes do framework de coleo da api Java que classificada e ordenada essa classificao se d pela ordem natural da classe que est sendo inserida: Classe Byte Character Long Integer Ordem Natural signed numerical unsigned numerical signed numerical signed numerical

Short Double Float BigInteger BigDecimal File String Date

signed numerical signed numerical signed numerical signed numerical signed numerical system-dependent lexicographic on pathname. lexicographic chronological

Map Faz um mapeamento de chave X valor, voc tem um objeto chave para um objeto valor. O elemento de um Map par de chave/valor. HashMap- conjunto Map no-ordenado e no classificado. Permite a existncia de chave e valores nulos. Hashtable equivalente HashMap com a diferena que mtodos so sincronizados, e no permitem valores/chaves nulos LinkedHashMap - uma verso ordenada (ordem de insero/acesso) da interface Map, registra seu sucessor e predecessor, classe duplamente encadeada. LinkedHashMap extends HashMap e implements Map, Cloneable e Serializable. TreeMap - classe da Framework Collection Java que classificada e conseqentemente ordenada Classe HashMap Hashtable TreeMap LinkedHashMap HashSet TreeSet LinkedHashSet ArrayList Vector LinkedList Map X X X X X X X X X X Conjunto Lista Ordenada no no sim sim no sim sim sim sim sim Classificada no no sim no no sim no no no no

Observaes: " " " " " TreeSet implements SortedSet e TreeMap implements SortedMap. TreeSet e TreeMap armazenam elementos na ordem determinada pela interface Comparator ou Comparable. Todas as Tree implementam Cloneable. ListIterator extends Iterator. A interface Enumeration introduzida com o Java 1.0 prove uma maneira simples de se mover atravs dos elementos de um Vector ou de chaves/valores de uma Hashtable. Existem dois mtodos: hasMoreElements e nextElement. A interface Iterator foi introduzida com o framework de colees no Java 1.2. Existem 3 mtodos: hasNext, next e remove. Interface ListIterator introduzida com o Java 1.2 na interface Iterator. A interface ListIterator extends a interface Iterator e declara mtodos adicionais que provem capacidade de iteraes para frente e para trs. A interface RandomAccess uma interface de sinalizao que no declara nenhum mtodo. Vector e Array List implementam a interface RandomAccess.

" "

"

Figura 1. Hierarquia de interfaces/classes de coleo de dados em Java.

Observao: Os nomes identificados na figura acima em itlico so interfaces, os demais so classes.

8. Classes Internas

As classes internas so divididas em: - Classe esttica aninhada (top-level class) - Classe interna comum - Classe interna local de mtodo - Classe interna annima

Classes estticas Top-level class. Uma classe esttica no tem acesso aos membros da instncia da classe encapsulada, somente os membros estticos tm a mesma visibilidade de uma classe externa. Modificadores que podem ser atribudos a uma classe interna esttica: " " " " " " static - obrigatrio claro protected public private abstract final

Nunca usar os modificadores abstract e final simultaneamente!

public class Ex03 { static int CountStatic = 0; int CountNonStatic = 0; public static class Inner { } }
Classe interna comum NUNCA poder ter uma instncia de uma classe interna sem que haja uma instncia de uma classe externa. Qualquer tentativa de instanciao da classe Inner sem que haja um OBJETO do tipo Outer, no funciona!

public class Outer { public static void main(String[] args) { Outer o = new Outer(); Inner i = o.new Inner(); } class Inner { } }
Classes internas e membros externos Instanciando um objeto interno fora da classe externa Referenciando a classe externa de dentro da classe interna Modificadores aplicados as classes internas comuns: " " " " " " " final abstract public private protected static - com uma exceo citada adiante. Strictfp

Classe interna local de mtodo

public class Outer { public void see() { class Inner { } } }


Uma classe de mtodo tem o modificador private por padro, visto que no pode ser instanciada de nenhum outro local seno o mtodo que encapsula a classe. No tente instanciar a classe interna antes de criar externa! Os nicos modificadores aplicados a essa classe so: " " abstract final

Nunca os dois ao mesmo tempo!!!

Variveis: Uma classe interna de mtodo no pode referenciar as variveis locais de mtodo.

Porm, se a varivel for final poder ser referenciada.

Classes internas annimas Compilador s ir conhecer os mtodos definidos na classe pai - qualquer tentativa de execuo ou chamada de um mtodo no existente, causar um erro de compilao: cannot resolve symbol.

class Empregado { public void trabalhar() { System.out.println("trabalhar"); } } class QuadroFuncionario { Empregado mgr = new Empregado() { public void trabalhar() { System.out.println("mandar"); } public void demite() { System.out.println("demite"); } }; public void work() { mgr.trabalhar(); mgr.demite(); } }
S variveis final podem ser referenciada.

Se precisar referenciar uma varivel local dentro de uma classe annima use array. Array final seus elementos no.

Classes finais no podem ser annimas: Nunca podemos ter uma classe annima a partir de uma classe final, pois uma classe annima nada mais do que uma herana de uma outra classe onde a subclasse

9. Segmentos

Maneiras de implementar: a) Estendendo da Classe Thread b) Implementando a Interface Runnable

Classe herda de Thread: implementa seu mtodo abstrato run, o cdigo que se encontrar dentro executado. Classe implementa Runnable: implementa o mtodo run, o mtodo que executado o mtodo da classe que implementa a interface Runnable.

A classe Thread implementa a interface Runnable.

Chamar o mtodo start para que o escalonador saiba da existncia da Thread, e deixe que o mtodo run seja executado pelo escalonador. Se voc no chamar o mtodo start, sua thread nunca ser executada.

Mtodos importantes da classe Thread " " " " " run() - o cdigo que a thread executar. No gera nenhuma exceo. start() - sinaliza JVM que a thread pode ser executada, mas saiba que essa execuo no garantida quando esse mtodo chamado, e isso pode depender da JVM. isAlive() - volta true se a thread est sendo executada e ainda no terminou. sleep() - suspende a execuo da thread por um tempo determinado. Membro esttico. Ele resulta que a execuo corrente de uma thread durma por um temo especficado em milisegundos. yield() -torna o estado de execuo da thread atual para executvel para que thread com prioridades equivalentes possam ser processadas. Membro esttico. Sua mudana no estado da transio no garantida. currentThread() - um mtodo esttico da classe Thread que volta qual a thread que est sendo executada. getName() - volta o nome da Thread, voc pode especificar o nome de uma Thread com o mtodo setName() ou na construo da mesma, pois existe os construtores sobrecarregados. join() - espera por uma thread especfica morrer. Pode ser passado como parmetro o tempo em mili e nano segundos.

" " "

Mtodos herdados de java.lang.Object relacionados com Threads: public final void wait()

Resulta que uma nica thread espere at que outra thread qualquer invoque o mtodo notify() ou notifyAll() para esse objeto, ou at que um tempo especficado tenha decorrido. public final void notify()

Acorda uma nica thread que est esperando seu controlador do objeto. public final void notifyAll() Acorda todas as threads que esto esperando seu controlador do objeto.

Esses mtodos so definidos na classe Object, todos os demais objetos tem esses mtodos, at mesmo a classe Thread. Eles SEMPRE devem ser chamados de um contexto sincronizados. No se esquea: Nunca se reinicia uma thread j executada.

No existe lock para primitivos, ento, eles no podem ser usados para sincronizar threads.

Observaes sobre Thread: " " " " " " " join(), sleep(), wait(): Gera a exceo InterruptedException. Pode ser especificado um parmetro para timeout. Um erro de compilao ocorrer se a expresso produzir qualquer valor de tipo primitivo. Se a execuo de um bloco finaliza normalmente ento o lock liberado. Se a execuo de um bloco finaliza bruscamente ento o lock liberado. Uma thread pode segurar mais de um lock ao mesmo tempo. Instrues sincronizadas podem ser aninhadas. Instrues sincronizadas com expresses iguais podem ser aninhadas.

Modelo de estados de transies do clico de vida de uma thread: " " " " Do estado pronto para rodando. (Ready ! Running) Do estado rodando para o no rodado (Running ! Not-Runnable) Do estado Rodado para o pronto (Running ! Ready) Do estado no rodado para o estado pronto. (Not-Runnable ! Ready)

Valores de definies para prioridades de execuo das Threads: " " " Thread.MAX_PRIORITY == 10 Thread.NORM_PRIORITY == 5 Thread.MIN_PRIORITY == 1

Invocar o mtodo start() para uma thread que j foi iniciada gerar a exceo: IllegalThreadStateException. Se o mtodo start() invocado para uma thread que j est em execuo, ento provavelmente a exceo ser gerada: IllegalThreadStateException.

Se para thread j est morta, uma segunda tentativa de inici-la novamente for executada provavelmente a thread ser ignorada e nenhuma exceo ser gerada.

Para propsito de exame de certificao, a exceo sempre gerada em resposta a uma segunda tentativa de iniciar uma thread.

necessrio conhecer os construtores da classe Thread se o intuito for a certificao.

Construtores para a classe Thread Thread() Thread(Runnable target) Thread(Runnable target, String name) Thread(String name) Thread(ThreadGroup group, Runnable target) Thread(ThreadGroup group, Runnable target , String name) Thread(ThreadGroup group, Runnable target , String name) Thread(ThreadGroup group, String name)

Para Saber Mais SIERRA, Kathy e BATES, Bert - Certificao Sun Para Programador & Desenvolvedor Java 2 http://www.atimonet.com.br/kuesley/estudojava/index.html http://java.sun.com/reference/api/index.html Simulados/Exerccios http://www.javacertificate.com/ http://www.danchisholm.net/july21/comprehensive/index.html http://www.javablackbelt.com/ http://www.guj.com.br/posts/list/13146.java http://www.javaranch.com/mock.jsp

Você também pode gostar