Articles of multithreading

Por que a desova de encadeamentos no contêiner do Java EE é desencorajada?

Uma das primeiras coisas que aprendi sobre o desenvolvimento do Java EE é que eu não deveria gerar meus próprios threads dentro de um contêiner Java EE. Mas quando chego a pensar nisso, não sei o motivo. Você pode explicar claramente porque é desencorajado? Tenho certeza de que a maioria dos aplicativos corporativos precisa de […]

Obter uma lista de todos os segmentos atualmente em execução no Java

Existe alguma maneira de obter uma lista de todos os Threads em execução na JVM atual (incluindo os Threads NOT iniciados pela minha class)? Também é possível obter os objects Thread e Class de todos os Threads na lista? Eu quero ser capaz de fazer isso através de código.

Usando encadeamentos para fazer solicitações de database

Eu estou tentando entender como threads funciona em java. Esta é uma solicitação de database simples que retorna um ResultSet. Estou usando o JavaFx. package application; import java.sql.ResultSet; import java.sql.SQLException; import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.TextField; public class Controller{ @FXML private Button getCourseBtn; @FXML private TextField courseId; @FXML private Label courseCodeLbl; private ModelController […]

Esperando por vários SwingWorkers

Por favor, considere o seguinte fragment de código: import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.lang.reflect.InvocationTargetException; import javax.swing.*; public class TestApplet extends JApplet { @Override public void init() { try { SwingUtilities.invokeAndWait(new Runnable() { @Override public void run() { createGUI(); } }); } catch(InterruptedException | InvocationTargetException ex) { } } private void createGUI() { getContentPane().setLayout(new […]

Como usar espera e notificar em Java sem IllegalMonitorStateException?

Eu tenho duas matrizes e preciso multiplicá-las e depois imprimir os resultados de cada célula. Assim que uma célula estiver pronta, preciso imprimi-la, mas por exemplo, preciso imprimir a célula [0] [0] antes da célula [2] [0], mesmo que o resultado de [2] [0] esteja pronto primeiro . Então eu preciso imprimir por encomenda. Portanto, […]

Qual é a diferença entre Invoke () e BeginInvoke ()

Basta saber qual é a diferença entre BeginInvoke() e Invoke() ? Principalmente para o que cada um seria usado. EDIT: qual é a diferença entre a criação de um object de threading e chamada invocar sobre isso e apenas chamando BeginInvoke() em um delegado? Ou eles são a mesma coisa?

Um num ++ pode ser atômico para ‘int num’?

Em geral, para int num , num++ (ou ++num ), como uma operação read-modify-write, não é atômica . Mas muitas vezes vejo compiladores, por exemplo, o GCC , gerar o seguinte código para ele ( tente aqui ): Como a linha 5, que corresponde a num++ é uma instrução, podemos concluir que num++ é atômico […]

Qual é a diferença entre um processo e um segmento?

Qual é a diferença técnica entre um processo e um thread? Tenho a sensação de que uma palavra como ‘processo’ é usada em demasia e também há tópicos de hardware e software. Como sobre processos leves em linguagens como Erlang ? Existe uma razão definitiva para usar um termo sobre o outro?

Animação Swing em execução extremamente lenta

Eu tenho um problema com a minha animação atual que estou executando usando o Java Swing. É uma simulação de events discretos e a simulação baseada em texto está funcionando bem, estou tendo problemas para conectar a simulação à saída da GUI. Para este exemplo, terei 10 carros para serem simulados. Os carros são representados […]

Como parar corretamente o Thread em Java?

Eu preciso de uma solução para parar corretamente o segmento em Java. Eu tenho a class IndexProcessor que implementa a interface Runnable: public class IndexProcessor implements Runnable { private static final Logger LOGGER = LoggerFactory.getLogger(IndexProcessor.class); @Override public void run() { boolean run = true; while (run) { try { LOGGER.debug(“Sleeping…”); Thread.sleep((long) 15000); LOGGER.debug(“Processing”); } catch […]