Fios de execução concorrentes de um programa.
Um processo tem uma ou mais threads.
Partilham recursos e comunicam entre si através de memória partilhada.
public class SayHello implements Runnable {
public void run() {
System.out.println("Hello from a thread!");
}
}
public class Main {
public static void main(String args[]) {
Thread t = new Thread(new SayHello());
t.start(); // Este método depois chamará o run()
t.join(); // Bloqueia até a thread terminar.
}
}
Propriedade que garante que dois processos ou threads não acedem simultaneamente a um recurso partilhado.
Parte do programa onde os recursos partilhados são acedidos e devem ser protegidos, usando locks.