Articles of simultaneidade

Variável volátil em Java

Então, estou lendo este livro intitulado Java Concurrency in Practice e estou preso a essa explicação que não consigo compreender sem um exemplo. Esta é a citação: Quando o thread A grava em uma variável volátil e, subsequentemente, o thread B lê a mesma variável, os valores de todas as variables ​​que estavam visíveis para […]

O HttpClient é seguro para uso simultâneo?

Em todos os exemplos que posso encontrar dos usos do HttpClient , ele é usado para uma chamada off. Mas e se eu tiver uma situação de cliente persistente, em que várias solicitações podem ser feitas simultaneamente? Basicamente, é seguro chamar client.PostAsync em 2 threads de uma só vez com a mesma instância do HttpClient […]

Confuso sobre UPDLOCK, HOLDLOCK

Ao pesquisar o uso de dicas de tabela , me deparei com essas duas perguntas: Quais dicas de bloqueio devo usar (T-SQL)? Qual o efeito que o HOLDLOCK tem em UPDLOCK? As respostas a ambas as perguntas dizem que, ao usar (UPDLOCK, HOLDLOCK) , outros processos não poderão ler dados nessa tabela, mas eu não […]

É seguro obter valores de um java.util.HashMap de vários threads (sem modificação)?

Há um caso em que um mapa será construído e, uma vez inicializado, ele nunca será modificado novamente. No entanto, será acessado (via get (key) apenas) de vários threads. É seguro usar um java.util.HashMap dessa maneira? (Atualmente, estou felizmente usando um java.util.concurrent.ConcurrentHashMap , e não tenho nenhuma necessidade medida para melhorar o desempenho, mas estou […]

Como resolver a declaração “Double-Checked Locking is Broken” em Java?

Eu quero implementar a boot lenta para multithreading em Java. Eu tenho algum código do tipo: class Foo { private Helper helper = null; public Helper getHelper() { if (helper == null) { Helper h; synchronized(this) { h = helper; if (h == null) synchronized (this) { h = new Helper(); } // release inner […]

Por que usar um ReentrantLock se alguém pode usar sincronizado (isso)?

Eu estou tentando entender o que torna o bloqueio em simultaneidade tão importante se alguém pode usar synchronized (this) . No código fictício abaixo, posso fazer o seguinte: sincronizou todo o método ou sincronizou a área vulnerável (sincronizada (isto) {…}) OU bloqueie a área de código vulnerável com um ReentrantLock. Código: private final ReentrantLock lock […]

A GUI do swing Java congela

Eu estou escrevendo um aplicativo de GUI cliente / servidor Java usando sockets e aqui está o problema: Eu tenho um botão para começar a ouvir uma porta específica: botão actionPerformed method private void listenButtonActionPerformed(java.awt.event.ActionEvent evt) { int port = Integer.parseInt(portTextfield.getText(), 10); try { socket.listen(port); } catch (IOException ex) { } } Aqui está o […]

Instruções SSE: quais CPUs podem fazer operações de memory atômica de 16B?

Considere uma única instrução SSE de access à memory (uma única leitura ou gravação única, não leitura + gravação) em uma CPU x86. A instrução está acessando 16 bytes (128 bits) de memory e a localização da memory acessada é alinhada a 16 bytes. O documento “Artigo sobre pedido de memory de arquitetura Intel® 64” […]

Trata-se de um pool de threads de trabalho idiomático no Go?

Eu estou tentando escrever um simples pool de trabalho com goroutines. O código que escrevi é idiomático? Se não, então o que deve mudar? Eu quero ser capaz de definir o número máximo de segmentos de trabalho para 5 e bloquear até que um trabalhador se torne disponível se todos os 5 estiverem ocupados. Como […]

Como faço para simular um dispositivo periférico em buffer com o SwingWorker?

Eu estou usando este exercício como uma ferramenta pedagógica para me ajudar a gravar em alguns conceitos de programação GUI Java. O que estou procurando é um entendimento geral, em vez de uma solução detalhada para um problema específico. Espero que codificar esse “certo” me ensine muito sobre como abordar futuros problemas de multiencadeamento. Se […]