Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

📚 The CoCalc Library - books, templates and other resources

132940 views
License: OTHER
1
\documentclass[usepdftitle=false,hyperref={pdfpagelabels=false}]{beamer}
2
\usepackage{../templates/myStyle}
3
4
\begin{document}
5
\title{\titleText}
6
\subtitle{Five-in-A-Row, Multithreading}
7
\author{\tutor}
8
\date{\today}
9
\subject{Programmieren}
10
11
\frame{\titlepage}
12
13
\frame{
14
\frametitle{Inhaltsverzeichnis}
15
\setcounter{tocdepth}{1}
16
\tableofcontents
17
\setcounter{tocdepth}{2}
18
}
19
20
%\AtBeginSection[]{
21
% \InsertToC[sections={\thesection}] % shows only subsubsections of one subsection
22
%}
23
24
\section{Einleitung}
25
\subsection{Quiz}
26
\begin{frame}{Quiz}
27
\begin{minipage}[b]{0.45\linewidth}
28
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny]{java}{QuizMain.java}
29
\end{minipage}
30
\hspace{0.5cm}
31
\begin{minipage}[b]{0.45\linewidth}
32
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny]{java}{QuizSum.java}
33
\vspace{3.5cm}
34
\end{minipage}
35
\end{frame}
36
37
\begin{frame}{Quiz: Race-Condition}
38
\begin{itemize}[<+->]
39
\item \myCode{bigSum++;} ist nicht atomar:
40
\item[] 3 Operationen: Wert holen, Wert erhöhen, Wert schreiben
41
\item[$\Rightarrow$] Ergebnis ist zufällig
42
\item Alles im Bereich $[BIG\_NR, 50 \cdot BIG\_NR]$ ist möglich:
43
\begin{enumerate}
44
\item Thread 1 holt sich den Wert von \texttt{bigSum}
45
\item Thread 2 - 50 laufen durch
46
\item Thread 1 erhöht den zuvor geholten Wert um 1
47
\item Thread 1 überschreibt \texttt{bigSum} mit 2
48
\item Thread 1 läuft durch
49
\end{enumerate}
50
\item Sind kleinere Werte möglich?
51
\end{itemize}
52
\end{frame}
53
54
\begin{frame}{Quiz: Race-Condition}
55
Sind kleinere Werte als \texttt{BIG\_NR} für \texttt{bigSum} möglich?
56
\begin{enumerate}[<+->]
57
\item[] Ja:
58
\item Thread 1 holt sich den Wert von \texttt{bigSum}
59
\item Thread 2 holt sich den Wert von \texttt{bigSum}
60
\item Thread 3 - 50 laufen durch
61
\item Thread 2 läuft bis 1 vorm Ende durch
62
\item Thread 1 erhöht Wert im Register von 0 auf 1 und schreibt 1
63
\item Thread 2 hohlt sich die 1 aus \texttt{bigSum}
64
\item Thread 1 läuft durch
65
\item Thread 2 erhöht Wert im Register von 1 auf 2 und schreibt 2
66
\item[$\Rightarrow$] Alle Werte in $[2, 50 \cdot BIG\_NR]$ sind möglich!
67
\item[] Wie löst man das Problem?
68
\end{enumerate}
69
\end{frame}
70
71
\begin{frame}{Quiz}
72
Wie löst man das Problem:?
73
74
Mit
75
\href{http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html}{AtomicLong}
76
aus
77
\href{http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/package-summary.html}{java.util.concurrent}
78
\end{frame}
79
80
\begin{frame}{Quiz}
81
\begin{minipage}[b]{0.45\linewidth}
82
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny]{java}{AnswerMain.java}
83
\end{minipage}
84
\hspace{0.5cm}
85
\begin{minipage}[b]{0.45\linewidth}
86
\inputminted[linenos=true, numbersep=5pt, tabsize=4, fontsize=\tiny]{java}{AnswerSum.java}
87
\vspace{3.5cm}
88
\end{minipage}
89
\end{frame}
90
91
\section{Abschlussaufgaben}
92
\subsection{Abschlussaufgaben}
93
\begin{frame}{Abschlussaufgaben}
94
\begin{itemize}
95
\item Herangehensweise
96
\begin{itemize}
97
\item Genau lesen
98
\item Frühzeitig lösen, viel Testen (Am besten schon heute!)
99
\item Bei Unklarheiten frühzeitig fragen!
100
\end{itemize}
101
\item Ausgabe
102
\begin{itemize}
103
\item Genau die erwartete Ausgabe liefern
104
\item An \myCode{toString()} denken
105
\end{itemize}
106
\item Trennung von Logik und Shell
107
\begin{itemize}
108
\item Siehe \href{https://github.com/MartinThoma/prog-ws1213/tree/master/Blatt-05.5}{Lösung zur Aufgabe 5.5}
109
\end{itemize}
110
\item Code
111
\begin{itemize}
112
\item \myCode{equals()}, \myCode{compareTo()} nutzen wenn sinnvoll
113
\item Exceptions einbauen, sollte der Nutzer aber nie sehen!
114
\item Gute JavaDoc!
115
\end{itemize}
116
\end{itemize}
117
\end{frame}
118
119
\begin{frame}{Abschlussaufgaben}
120
Bepunktung:
121
\begin{itemize}
122
\item Punkte für Funktionalität
123
\item Punkte für Programmier-Stil
124
\item Nicht unbedingt gleich gewichtet
125
\end{itemize}
126
\end{frame}
127
128
% http://www.tutorialspoint.com/java/java_multithreading.htm
129
%TODO David Kulicke - Nr. 13
130
131
\section{Spiele}
132
\subsection{Spiele}
133
\begin{frame}{Spiele}
134
Anleitung für Snake, Tetris, Sokuban, Breakout \dots ist \href{http://zetcode.com/tutorials/javagamestutorial/}{hier}.
135
\end{frame}
136
137
\section{Multithreading}
138
\subsection{Multithreading}
139
\begin{frame}{Multithreading}
140
\begin{itemize}
141
\item \href{http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html}{Runnable}
142
\item \href{http://www.vogella.com/articles/JavaConcurrency/article.html}{Java Concurrency (Multithreading) - Tutorial}
143
\item \href{http://www.tutorialspoint.com/java/java_multithreading.htm}{Java - Multithreading}
144
\end{itemize}
145
\end{frame}
146
147
\section{Abspann}
148
\subsection{Kommende Tutorien}
149
\begin{frame}{Kommende Tutorien}
150
\begin{itemize}
151
\item[1.] 28.01.2013: Abschlussprüfunsvorbereitung
152
\item[0.] 04.02.2013: Abschlussprüfunsvorbereitung
153
\item[-] 10.02.2013: Ende der Vorlesungszeit des WS 2012/2013 (\href{http://www.kit.edu/studieren/2873.php}{Quelle})
154
\end{itemize}
155
\end{frame}
156
157
\framedgraphic{Vielen Dank für eure Aufmerksamkeit!}{../images/Teach-yourself-C++-in-21-days.png}
158
159
\end{document}
160
161