Articles of multithreading

Como testar se um ThreadLocal foi inicializado sem realmente fazer isso?

Eu quero testar se um ThreadLocal foi inicializado sem realmente inicializá-lo. Claro, o código precisa ser thread-safe. Idealmente eu quero algo assim: class TestableThreadLocal extends ThreadLocal { public boolean isInitialized() { … } } Mas como eu implementaria esse método? Edit: Motivação: Eu subclass um ThreadLocal para replace initialValue() . No entanto, nem sempre preciso […]

O que é a justiça na programação multi-threading?

O que é imparcialidade ou imparcialidade de threads em programação simultânea / multithread? Eu tenho googled, há um monte de informações sobre multi-threading, mas não exatamente na justiça. Alguém pode explicar. Um exemplo é muito bem-vindo.

O que é uma boa proporção de encadeamentos Java para CPUs no Solaris?

Eu tenho um aplicativo Java que tem um conjunto de threads fixo de quinze anos, a máquina, Solaris 10 SPARC, tem dezesseis CPUs. Adicionando o pool aumentou muito o desempenho, mas eu estou querendo saber se eu tenho muitos tópicos no pool. O desempenho seria melhor com menos threads ou o Solaris faz um bom […]

Como posso interromper o IDLE do IMAP?

Eu estou usando a API do Javamail conectando ao meu servidor IMAP. Tudo está funcionando bem com o método javax.mail.Folder.idle (). Meu ouvinte é chamado quando um novo e-mail é enviado. No entanto, o problema é que os blocos ociosos permaneçam para sempre. Como posso interrompê-lo? Como eu realmente paro de ouvir sem matar meu […]

como saber se a class java SE ou método é thread-safe?

Por exemplo, tendo: static private DateFormat df = new SimpleDateFormat(); public static void format(final Date date){ for (int i=0;i<10;i++) new Thread(new Runnable(){ public void run(){ System.out.println(df.format(date)); } }); } Classe DateFormat documentada como Classe não sincronizada, mas se usarmos apenas o formato Method, não é possível alterar o statut da class hole? Suponha que ele […]

A checkbox de modal dialog Swing se recusa a fechar – às vezes!

// This is supposed to show a modal dialog and then hide it again. In practice, // this works about 75% of the time, and the other 25% of the time, the dialog // stays visible. // This is on Ubuntu 10.10, running: // OpenJDK Runtime Environment (IcedTea6 1.9) (6b20-1.9-0ubuntu1) // This always prints // […]

Suspender consumidor no padrão produtor / consumidor

Eu tenho produtor e consumidor conectado com o BlockingQueue . Consumidor espera registros de fila e processa isto: Record r = mQueue.take(); process(r); Eu preciso pausar esse processo por um tempo de outro segmento. Como implementar isso? Agora eu acho que implementar isso, mas parece uma solução ruim: private Object mLock = new Object(); private […]

Como alterar o nível de log para determinados usuários / threads em tempo de execução

Estou usando o slf4j com log4j 2.0 ou logback como a implementação. Por exemplo, meu servlet possui um logger com nível ERROR e meu servidor gera 100 threads do servlet. Eu vou ter uma lista de usuários especiais em tempo de execução. Quando detecto alguns dos usuários especiais conectados. Desejo alterar o nível de log […]

Como lidar com bibliotecas mal comportadas que não interrompem threads

Quais são algumas soluções alternativas ao lidar com bibliotecas de terceiros que não limpam corretamente os encadeamentos quando a biblioteca é encerrada? Muitas bibliotecas expõem methods de ciclo de vida, explícita ou implicitamente, para o código nele contido. Por exemplo, existe uma estrutura de aplicativo da web dentro de um contexto de aplicativo da web […]

ExecutorService, como saber quando todos os threads terminaram sem bloquear o thread principal?

Eu tenho uma implementação multiencadeada onde eu crio um ExecutorService e submeto tarefas a serem executadas, eu quero saber quando todos os threads que foram enviados terminaram sem bloquear o thread principal e a UI. Eu tentei ExecutorService.awaitTermination() mas bloqueia o thread principal e a interface do usuário. Eu procurei muito, mas não consigo encontrar […]