Martin Thoma 11 years ago
parent
commit
11f76e1a6e

+ 28 - 8
documents/Programmierparadigmen/Java.tex

@@ -5,10 +5,10 @@
 Im Folgenden wird in aller Kürze erklärt, wie man in Java Programme schreibt,
 Im Folgenden wird in aller Kürze erklärt, wie man in Java Programme schreibt,
 die auf mehreren Prozessoren laufen.
 die auf mehreren Prozessoren laufen.
 
 
-\section{Thread, ThreadPool und Runnable}
+\section{Thread, ThreadPool, Runnable und ExecutorService}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\texttt{Interface Runnable}\\
-\-\hspace{0.8cm}$\leftharpoonup$ \texttt{java.lang.Thread}\xindex{Runnable}%
+\texttt{Interface Runnable}\xindex{Runnable}\\
+\-\hspace{0.8cm}$\leftharpoonup$ \texttt{java.lang.Thread}%
 \begin{itemize}
 \begin{itemize}
     \item Methods: 
     \item Methods: 
     \begin{itemize}
     \begin{itemize}
@@ -18,20 +18,36 @@ die auf mehreren Prozessoren laufen.
     \end{itemize}
     \end{itemize}
 \end{itemize}
 \end{itemize}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\texttt{Class Thread}\\
-\-\hspace{0.8cm}$\leftharpoonup$ \texttt{java.lang.Thread}\xindex{Thread}%
+\texttt{Class Thread}\xindex{Thread}\\
+\-\hspace{0.8cm}$\leftharpoonup$ \texttt{java.lang.Thread}%
 \begin{itemize}
 \begin{itemize}
     \item implements Runnable
     \item implements Runnable
 \end{itemize}
 \end{itemize}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \texttt{Class ThreadPoolExecutor}\xindex{ThreadPoolExecutor}\\
 \texttt{Class ThreadPoolExecutor}\xindex{ThreadPoolExecutor}\\
 \-\hspace{0.8cm}$\leftharpoonup$ \texttt{java.util.concurrent.ThreadPoolExecutor}
 \-\hspace{0.8cm}$\leftharpoonup$ \texttt{java.util.concurrent.ThreadPoolExecutor}
+
+
+\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}
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \texttt{Interface Callable<V>}\xindex{Callable}\\
 \texttt{Interface Callable<V>}\xindex{Callable}\\
 \-\hspace{0.8cm}$\leftharpoonup$ \texttt{java.util.concurrent}
 \-\hspace{0.8cm}$\leftharpoonup$ \texttt{java.util.concurrent}
 \begin{itemize}
 \begin{itemize}
-    \item Parameter: \texttt{V} - the result type of method call
+    \item Parameter: 
+    \begin{itemize}
+        \item \texttt{V} - the result type of method \texttt{call()}
+    \end{itemize}
+    \item Ermöglicht die Rückgabe von Ergebnissen
  \end{itemize} 
  \end{itemize} 
+
+\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}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \section{Futures}\xindex{Future}\index{Promise|see{Future}}
 \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.}
 \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.}
@@ -39,9 +55,13 @@ die auf mehreren Prozessoren laufen.
 \texttt{Interface Future<V>}\xindex{Future}\\
 \texttt{Interface Future<V>}\xindex{Future}\\
 \-\hspace{0.8cm}$\leftharpoonup$ \texttt{java.util.concurrent}
 \-\hspace{0.8cm}$\leftharpoonup$ \texttt{java.util.concurrent}
 
 
-\textbf{Parameter}:
+
 \begin{itemize}
 \begin{itemize}
-    \item \texttt{V}: The result type returned by this Future's get method
+    \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
 \end{itemize}
 \end{itemize}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 

BIN
documents/Programmierparadigmen/Programmierparadigmen.pdf


+ 9 - 0
documents/Programmierparadigmen/scripts/java/callable-example.java

@@ -0,0 +1,9 @@
+public final class StringTask implements Callable<String> {
+    int id;
+    public StringTask(int id) {
+        this.id = id;
+    }
+    public String call() {
+        return "Run " + id;
+    }
+}

+ 18 - 0
documents/Programmierparadigmen/scripts/java/executer-service-future-example.java

@@ -0,0 +1,18 @@
+public static void main(String[] args) throws
+  InterruptedException, ExecutionException {
+    ExecutorService pool = 
+            Executors.newFixedThreadPool(4);
+    List<Future<String>> futures = 
+            new ArrayList<Future<String>>();
+
+    for(int i = 0; i < 10; i++) {
+        futures.add(pool.submit(new StringTask(i)));
+    }
+
+    for(Future<String> future : futures){
+        String result = future.get();
+        System.out.println(result);
+    }
+
+    pool.shutdown();
+}