2014-03-24 17:04:40 +01:00
%!TEX root = Programmierparadigmen.tex
\chapter { Java}
\index { Java|(}
Im Folgenden wird in aller Kürze erklärt, wie man in Java Programme schreibt,
die auf mehreren Prozessoren laufen.
2014-03-24 18:55:32 +01:00
\section { Thread, ThreadPool, Runnable und ExecutorService}
2014-03-24 17:04:40 +01:00
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2014-03-24 18:55:32 +01:00
\texttt { Interface Runnable} \xindex { Runnable} \\
\- \hspace { 0.8cm} $ \leftharpoonup $ \texttt { java.lang.Thread} %
2014-03-24 17:04:40 +01:00
\begin { itemize}
\item Methods:
\begin { itemize}
\item \texttt { void run()} : When an object implementing interface
Runnable is used to create a thread, starting the thread causes the
object's run method to be called in that separately executing thread.
\end { itemize}
\end { itemize}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2014-03-24 18:55:32 +01:00
\texttt { Class Thread} \xindex { Thread} \\
\- \hspace { 0.8cm} $ \leftharpoonup $ \texttt { java.lang.Thread} %
2014-03-24 17:04:40 +01:00
\begin { itemize}
\item implements Runnable
\end { itemize}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\texttt { Class ThreadPoolExecutor} \xindex { ThreadPoolExecutor} \\
\- \hspace { 0.8cm} $ \leftharpoonup $ \texttt { java.util.concurrent.ThreadPoolExecutor}
2014-03-24 18:55:32 +01:00
\begin { beispiel} [ExecutorService, Future\footnotemark ]
\inputminted [numbersep=5pt, tabsize=4] { java} { scripts/java/executer-service-future-example.java}
\end { beispiel}
\footnotetext { WS 2013/2014, Kapitel 41, Folie 28}
2014-03-24 17:04:40 +01:00
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\texttt { Interface Callable<V>} \xindex { Callable} \\
\- \hspace { 0.8cm} $ \leftharpoonup $ \texttt { java.util.concurrent}
\begin { itemize}
2014-03-24 18:55:32 +01:00
\item Parameter:
\begin { itemize}
\item \texttt { V} - the result type of method \texttt { call()}
\end { itemize}
\item Ermöglicht die Rückgabe von Ergebnissen
2014-03-24 17:04:40 +01:00
\end { itemize}
2014-03-24 18:55:32 +01:00
\begin { beispiel} [Callable\footnotemark ]
\inputminted [numbersep=5pt, tabsize=4] { java} { scripts/java/callable-example.java}
\end { beispiel}
\footnotetext { WS 2013/2014, Kapitel 41, Folie 27}
2014-03-24 17:04:40 +01:00
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section { Futures} \xindex { Future} \index { Promise|see{ Future} }
\enquote { Ein Future (engl. \enquote { Zukunft} ) oder ein Promise (engl. \enquote { Versprechen} ) bezeichnet in der Programmierung einen Platzhalter (Proxy) für ein Ergebnis, das noch nicht bekannt ist, meist weil seine Berechnung noch nicht abgeschlossen ist.}
\texttt { Interface Future<V>} \xindex { Future} \\
\- \hspace { 0.8cm} $ \leftharpoonup $ \texttt { java.util.concurrent}
2014-03-24 18:55:32 +01:00
2014-03-24 17:04:40 +01:00
\begin { itemize}
2014-03-24 18:55:32 +01:00
\item \textbf { Parameter} :
\begin { itemize}
\item \texttt { V} : The result type returned by this Future's get method
\end { itemize}
\item Erlauben die Rückgabe von Ergebnissen
2014-03-24 17:04:40 +01:00
\end { itemize}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\textbf { Beispiel} :
% Zu lang, geht das kürzer?
%\inputminted[numbersep=5pt, tabsize=4]{java}{scripts/java/matrix-multiplication.java}
\begin { beispiel} [Runnable, ExecutorService, ThreadPool\footnotemark ]
\inputminted [numbersep=5pt, tabsize=4] { java} { scripts/java/vorlesung-futures-basics.java}
\end { beispiel}
\footnotetext { WS 2013/2014, Kapitel 41, Folie 26}
\section { Literatur}
\begin { itemize}
\item \href { http://openbook.galileocomputing.de/javainsel9/javainsel_ 14_ 004.htm} { Java ist auch eine Insel} : Kapitel 14 -
Threads und nebenläufige Programmierung
\item \href { http://www.vogella.com/tutorials/JavaConcurrency/article.html} { vogella.com} : Java concurrency (multi-threading) - Tutorial
\item Links zur offiziellen Java 8 Dokumentation:
\begin { itemize}
\item \href { http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html} { ThreadPoolExecutor}
\item \href { http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html} { Runnable}
\item \href { http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html} { Thread}
\item \href { http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Callable.html} { Callable}
\item \href { http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html} { Future}
\end { itemize}
\end { itemize}
\index { Java|)}