{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fcharset0 Arial;}}
{\*\generator Msftedit 5.41.15.1515;}\viewkind4\uc1\pard\f0\fs20 /*\par
 * To change this template, choose Tools | Templates\par
 * and open the template in the editor.\par
 */\par
\par
package atomictest;\par
\par
import java.util.concurrent.ExecutionException;\par
import java.util.concurrent.ExecutorService;\par
import java.util.concurrent.Executors;\par
import java.util.concurrent.Future;\par
import java.util.concurrent.atomic.AtomicInteger;\par
\par
/**\par
 *\par
 * @author karlssoj\par
 */\par
public class Main \{\par
\par
    /**\par
     * @param args the command line arguments\par
     */\par
    public static void main(String[] args) throws InterruptedException, ExecutionException\par
    \{\par
        ExecutorService tradGrupp = Executors.newFixedThreadPool(2);\par
        Data obj = new Data();\par
\par
        //skapar tv\'e5 tr\'e5dar d\'e4r b\'e5da tr\'e5darna inkrementerar samma variabel\par
        Future trad1 = tradGrupp.submit(new Incrementer(obj));\par
        Future trad2 = tradGrupp.submit(new Incrementer(obj));\par
\par
        //v\'e4ntar p\'e5 att inkrementeringstr\'e5darna skall avsluta\par
        trad1.get();\par
        trad2.get();\par
\par
        //visar resultatet\par
        System.out.println("Talet \'e4r " +obj.tal.get());\par
    \}\par
\par
\}\par
\par
\par
class Data\par
\{\par
    //skapar ett atomiskt heltal (auotomatiskt tr\'e5ds\'e4ker)\par
    AtomicInteger tal = new AtomicInteger();\par
\}\par
\par
class Incrementer implements Runnable\par
\{\par
    Data obj;\par
\par
    public Incrementer(Data obj)\par
    \{\par
        this.obj = obj;\par
    \}\par
\par
\par
    public void run()\par
    \{\par
        for(int i = 0; i < 100000; i++)\par
            obj.tal.incrementAndGet(); //inkrementerar den atomiska integern\par
    \}\par
\par
\}\par
}
 