fork(1) download
  1. /* package whatever; // don't place package name! */
  2.  
  3. public class Main {
  4.  
  5. private static Thread criarThread(final int numero) {
  6. return new Thread(new Runnable() {
  7. @Override
  8. public void run() {
  9. try {
  10. System.out.println("t" + numero + " começou");
  11. Thread.sleep((int) (Math.random() * 10000));
  12. System.out.println("t" + numero + " terminou");
  13. } catch (InterruptedException e) {
  14. // Ignora...
  15. }
  16. }
  17. });
  18. }
  19.  
  20. public static void main(String[] args) {
  21. Thread[] ts = {
  22. criarThread(1),
  23. criarThread(2),
  24. criarThread(3),
  25. criarThread(4),
  26. criarThread(5)
  27. };
  28. for (Thread t : ts) {
  29. t.start();
  30. }
  31.  
  32. new Thread(new Runnable() {
  33. @Override
  34. public void run() {
  35. for (Thread t : ts) {
  36. try {
  37. t.join();
  38. } catch (InterruptedException e) {
  39. // Ignora...
  40. }
  41. }
  42. System.out.println("Todas as threads terminaram");
  43. }
  44. }).start();
  45. System.out.println("A main está livre");
  46. }
  47. }
Success #stdin #stdout 0.1s 322432KB
stdin
Standard input is empty
stdout
t1 começou
t2 começou
t3 começou
t4 começou
t5 começou
A main está livre
t3 terminou
t5 terminou
t1 terminou
t4 terminou
t2 terminou
Todas as threads terminaram