multithreading recursion
play

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


  1. Multithreading Recursion Checkout Multithreading and Recursion project from SVN

  2. Joe Armstrong, Programming in Erlang Q1

  3.  A technique to: ◦ Run multiple pieces of code “simultaneously” on a single machine 1 1 1 1 1 Time  Slices 1 2 3 4 5 6 7 8 9 0 1 2 3 4 running thread 1 running thread 2 ◦ Run different parts of a program on different processor cores Q2

  4. From java. a.lan ang public class R implements Runnable { ... public void run() { while (true) { ... maybe Thread.sleep(...); } Our custom code } } Whe herever y you w ou want nt to to sta tart the the Thr hread: Q3 new Thread( object of type R ).start();

  5.  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 ou want nt to to sta tart the the Thr hread: new Thread( object of type R ).start();

  6.  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

  7.  Web servers: many users connecting  Desktop applications: ◦ layout, spellchecking, auto-save, …  Scientific computing  Weather forecasting  …

  8.  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 Optional: For a way to fix this, see Big Java Section 20.4 Q4

  9.  By Douglas Hofstadter  Argues that a major component of intelligence is ou our r ab abili ility ty to to th thin ink ab abou out th thin inkin ing

  10.  A solution technique where the same computation occurs r repe peatedl dly y as the problem is solved re recu curs rs  Examples: ◦ Sierpinski Triangle: tonight’s HW ◦ Towers of Hanoi: http://www.mathsisfun.com/games/towerofhanoi.html or search for Towers of Hanoi

  11.  A solution technique where the same computation occurs r repe peatedl dly y as the problem is solved re recu curs rs

  12.  If each red block has Triangle with width 1 area 1, what is the ar area ea A(n A(n) ) of the Triangle Triangle with width 2 whose width is n? ◦ Answer: A(n) = n + A(n-1)  The above holds for Triangle with width 3 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 4

  13. 3. Write class name (for static method) or draw 1. Draw box when method starts reference to object (for non-static method) 2. Fill in name and first line no. method name, line number scope box parameters and local variables 5. List every local variable declared 4. List every parameter in the method, but no ut no values y yet and its argument value. 6. Step through the method, update the line number and variable values, draw new frame for new calls Thanks to David Gries for this 7. “Erase” the frame when the method is done. technique Q5-Q6

  14.  Trace the buildSh Shap ape(M (MAX AX_DEPTH) method call in shap apes es.Mai ain’s ma main in method

  15.  Always have a bas ase ca case that doesn’t ’t rec ecurse  Make sure recursive case always makes prog rogress, by solv olvin ing a a small maller p pro roble lem  You You gotta otta belie lieve ◦ Trust in the recursive solution ◦ Just consider one step at a time

  16.  Add a recursive method to Sentence for computing Sentence whether Sentence is String text a palindrome String toString() boolean isPalindrome

  17.  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 last letter of the Position of first letter of the remaining String to check remaining String to check

  18.  Reverse a string…recursively!  A recursive helper can make this really short!

  19.  “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

  20.  Factorial: Base Case Recursive step  Ackermann function:

  21. Work time Be sure everyone is getting a chance to drive. Q7-8

Recommend


More recommend