import java.util.Arrays; import java.util.concurrent.locks.Lock; //interface (lock- og unlock-metoder) import java.util.concurrent.locks.ReentrantLock; // Den vi skal faktisk lage objekter av public class Main { public static void main(String[] args) { Runnable task = new MyTask(1); Thread worker1 = new Thread(task); Thread worker2 = new Thread(task); worker1.start(); worker2.start(); // skjer paa baksiden: kaller paa run-metoden til Task-en try { worker1.join(); // Main stopper opp og venter .... worker2.join(); // Main stopper og venter } catch (InterruptedException e) { System.out.println("Main-traaden ble avbrutt"); return; } System.out.println("Naa er alt ferdig"); } } class MyTask implements Runnable { private int id; private int teller = 0; private Lock laas = new ReentrantLock(); public MyTask(int id) { this.id = id; } private void skrivMelding() { System.out.println("Dette er en melding fra traad " + id); Arrays.toString(a) } @Override public void run() { System.out.println("Traaden kjoerer"); skrivMelding(); laas.lock(); // sjekker om låsen er åpen eller ikke, // om den er låst så legger den seg og venter try { teller += 1; } finally { laas.unlock(); } System.out.println(teller); } }