Ola a todos. Eu fiz o código certinho do vídeo porém ao iniciar o servidor ocorreu este erro
run:
---- Iniciando Servidor ----
Exception in thread "main" java.net.BindException: Address already in use: JVM_Bind
at java.net.DualStackPlainSocketImpl.bind0(Native Method)
at java.net.DualStackPlainSocketImpl.socketBind(DualStackPlainSocketImpl.java:106)
at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:190)
at java.net.ServerSocket.bind(ServerSocket.java:375)
at java.net.ServerSocket.<init>(ServerSocket.java:237)
at java.net.ServerSocket.<init>(ServerSocket.java:128)
at alura.curso.threadsII.aula5.servidor.ServidorTarefas.<init>(ServidorTarefas.java:19)
at alura.curso.threadsII.aula5.servidor.ServidorTarefas.main(ServidorTarefas.java:49)
C:\Users\Gustavo\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
FALHA NA CONSTRUÇÃO (tempo total: 0 segundos)
Então eu fui até o download da aula e deu o mesmo erro. Alguém sabe o que houve? Vou colocar o código da classe ServidorTarefas.
package alura.curso.threadsII.aula5.servidor;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicBoolean;
public class ServidorTarefas {
private ServerSocket servidor;
private ExecutorService threadPool;
private AtomicBoolean estaRodando;
public ServidorTarefas() throws IOException {
System.out.println("---- Iniciando Servidor ----");
this.servidor = new ServerSocket(12345);
this.threadPool = Executors.newFixedThreadPool(4, new FabricaDeThreads());
this.estaRodando = new AtomicBoolean(true);
}
public void rodar() throws IOException {
while (this.estaRodando.get()) {
try {
Socket socket = this.servidor.accept();
System.out.println("Aceitando novo cliente na porta " + socket.getPort());
DistribuirTarefas distribuirTarefas = new DistribuirTarefas(threadPool, socket, this);
this.threadPool.execute(distribuirTarefas);
} catch (SocketException e) {
System.out.println("SocketException, está rodando? " + this.estaRodando);
}
}
}
public void parar() throws IOException {
this.estaRodando.set(false);
this.threadPool.shutdown();
this.servidor.close();
System.out.println("Parando servidor");
}
public static void main(String[] args) throws Exception {
ServidorTarefas servidor = new ServidorTarefas();
servidor.rodar();
}
}