%Teilweise Erzeugt mit dem LaTeX-Generator: http://latex.sehnot.de

%Schriftgröße, Layout, Papierformat, Art des Dokumentes
\documentclass[10pt,oneside,a4paper]{scrartcl}

%Einstellungen der Seitenränder
\usepackage[left=2cm,right=2cm,top=1.5cm,bottom=1.5cm,includeheadfoot]{geometry}

%neue Rechtschreibung
\usepackage[ngerman]{babel}

%Umlaute ermöglichen
\usepackage[utf8]{inputenc}

%Gesamtseitenzahl
\usepackage{lastpage}

% Kopf- und Fußzeile
\usepackage[automark]{scrpage2}

%Quellcode-Listings
\usepackage{listings}

%Hyperlinks
\usepackage{hyperref}

%Kopfzeile
\ihead{Java}
\chead{}
\ohead{http://kohnlehome.de/java/synchronize.pdf}
\setheadsepline{0.5pt}

%Fußzeile
\setfootsepline{0.5pt}
\ifoot{Franz Kohnle}
\cfoot{Seite \thepage\ von  \pageref{LastPage}}
\ofoot{\today}

\pagestyle{scrheadings}

\begin{document}

% Überschrift 
\begin{center}
\LARGE % Schriftgröße
\bfseries % Fettdruck
\sffamily % Serifenlose Schrift
Java: Critical Code absichern
\end{center}

\noindent
Um Race-Conditions zu vermeiden, muss dafür gesorgt werden, dass "Critical Code" nicht von mehreren Threads gleichzeitig ausgeführt wird. Ein Thread darf erst einen kritischen Codeabschnitt ausführen, wenn sich kein anderer Thread mehr im kritischen Codeabschnitt befindet.

\section*{Synchronized Methode}
\begin{verbatim}
public synchronized void methode(){

    // CRITICAL CODE
    
}
\end{verbatim}

\section*{Synchronized Block}
\begin{verbatim}
synchronized(this){

    // CRITICAL CODE
    
}
\end{verbatim}

\section*{Lock}
\begin{verbatim}
Lock lock = new ReentrantLock();
lock.lock();

// CRITICAL CODE

lock.unlock();
\end{verbatim}



\end{document}
