SLIDE 1
Multithreading Recursion Checkout Multithreading and Recursion - - PowerPoint PPT Presentation
Multithreading Recursion Checkout Multithreading and Recursion - - PowerPoint PPT Presentation
Multithreading Recursion Checkout Multithreading and Recursion project from SVN Joe Armstrong, Programming in Erlang Q1 A technique to: Run multiple pieces of code simultaneously on a single machine 1 1 1 1 1 Time Slices
SLIDE 2
SLIDE 3
Joe Armstrong, Programming in Erlang
Q1
SLIDE 4
A technique to:
- Run multiple pieces of code “simultaneously” on a
single machine
- Run different parts of a program on different
processor cores
Time Slices
1 2 3 4 5 6 7 8 9 1 1 1 1 2 1 3 1 4
running thread 1 running thread 2 Q2
SLIDE 5
Our custom code From java. a.lan ang public class R implements Runnable { ... public void run() { while (true) { ... maybe Thread.sleep(...); } } } Whe herever y you w
- u want
nt to to sta tart the the Thr hread: new Thread(object of type R).start(); Q3
SLIDE 6
Example 1: A single object
- “Animate” it with button clicks
- Animate it with a Timer
Timer timer = new Timer(50, animatorButton); timer.start();
- Animate it by
using a thread
public class R implements Runnable { ... public void run() { while (true) { ... maybe Thread.sleep(...); } } } Whe herever y you w
- u want
nt to to sta tart the the Thr hread: new Thread(object of type R).start();
SLIDE 7
Example 2: Multiple objects
- Use separate thread for each object’s “brain”
- Another thread asks Java to update the GUI
http://www.roadsideamerica.com/story/8543
SLIDE 8
Web servers: many users connecting Desktop applications:
- layout, spellchecking, auto-save, …
Scientific computing Weather forecasting …
SLIDE 9
What if one thread is in the middle of
performing an action when its time slice ends?
What if a second thread’s action interferes
with the first’s action?
See bank example in today’s project Q4
Optional: For a way to fix this, see Big Java Section 20.4
SLIDE 10
By Douglas
Hofstadter
Argues that a major
component of intelligence is ou
- ur
r ab abili ility ty to to th thin ink ab abou
- ut th
thin inkin ing
SLIDE 11
A solution technique where the same
computation occurs r repe peatedl dly y as the problem is solved
Examples:
- Sierpinski Triangle: tonight’s HW
- Towers of Hanoi:
http://www.mathsisfun.com/games/towerofhanoi.html
- r search for Towers of Hanoi
re recu curs rs
SLIDE 12
A solution technique where the same
computation occurs r repe peatedl dly y as the problem is solved
re recu curs rs
SLIDE 13
If each red block has
area 1, what is the ar area ea A(n A(n) ) of the Triangle whose width is n?
- Answer:
A(n) = n + A(n-1)
The above holds for
which n ? What is the answer for other n ?
- Answer: The recursive
equation holds for n >= 1. For n = 0, the area is 0.
Triangle with width 1 Triangle with width 2 Triangle with width 3 Triangle with width 4
SLIDE 14
Thanks to David Gries for this technique parameters and local variables method name, line number scope box
- 1. Draw box when method starts
- 2. Fill in name and first line no.
- 3. Write class name (for
static method) or draw reference to object (for non-static method)
- 4. List every parameter
and its argument value.
- 5. List every local variable declared
in the method, but no ut no values y yet
- 6. Step through the method, update the line number
and variable values, draw new frame for new calls
- 7. “Erase” the frame when the method is done.
Q5-Q6
SLIDE 15
Trace the buildSh
Shap ape(M (MAX AX_DEPTH) method call in shap apes es.Mai ain’s ma main in method
SLIDE 16
Always have a bas
ase ca case that doesn’t ’t rec ecurse
Make sure recursive case always makes
prog rogress, by solv
- lvin
ing a a small maller p pro roble lem
You
You gotta
- tta belie
lieve
- Trust in the recursive solution
- Just consider one step at a time
SLIDE 17
Add a recursive
method to Sentence for computing whether Sentence is a palindrome
Sentence String text String toString() boolean isPalindrome
SLIDE 18
Our isPalindrome() makes lots of new
Sentence objects
We can make it better with a “recursive helper
method”
Many recursive problems require a helper method
public boolean isPalindrome() { return isPalindrome(0, this.text.length() – 1); }
Position of first letter of the remaining String to check Position of last letter of the remaining String to check
SLIDE 19
Reverse a string…recursively! A recursive helper can make this really short!
SLIDE 20
“If you already know what recursion is, just
remember the answer. Otherwise, find someone who is standing closer to Douglas Hofstadter than you are; then ask him or her what recursion is.” —Andrew Plotkin
SLIDE 21
Factorial: Ackermann function:
Base Case Recursive step
SLIDE 22