![Page 1: 1 CS2136: Paradigms of Computation Class 21: Designing Event Listeners Number Parsing Multi-Threading & Java Threads Copyright 2000-2003, Michael J. Ciaraldi](https://reader031.vdocument.in/reader031/viewer/2022013101/56649f1f5503460f94c36f14/html5/thumbnails/1.jpg)
1
CS2136:Paradigms of Computation
Class 21:
Designing Event ListenersNumber Parsing
Multi-Threading &Java Threads
Copyright 2000-2003, Michael J. Ciaraldi and David Finkel
![Page 2: 1 CS2136: Paradigms of Computation Class 21: Designing Event Listeners Number Parsing Multi-Threading & Java Threads Copyright 2000-2003, Michael J. Ciaraldi](https://reader031.vdocument.in/reader031/viewer/2022013101/56649f1f5503460f94c36f14/html5/thumbnails/2.jpg)
2
Designing Event Listeners
![Page 3: 1 CS2136: Paradigms of Computation Class 21: Designing Event Listeners Number Parsing Multi-Threading & Java Threads Copyright 2000-2003, Michael J. Ciaraldi](https://reader031.vdocument.in/reader031/viewer/2022013101/56649f1f5503460f94c36f14/html5/thumbnails/3.jpg)
3
Issues for Event Listeners
How to handle multiple event sources.
How to handle similarities and differences.
How does listener know what to do?
![Page 4: 1 CS2136: Paradigms of Computation Class 21: Designing Event Listeners Number Parsing Multi-Threading & Java Threads Copyright 2000-2003, Michael J. Ciaraldi](https://reader031.vdocument.in/reader031/viewer/2022013101/56649f1f5503460f94c36f14/html5/thumbnails/4.jpg)
4
Criteria
What is easiest: To program? To understand? To fix? To update or extend?
Example: Multiple buttons
![Page 5: 1 CS2136: Paradigms of Computation Class 21: Designing Event Listeners Number Parsing Multi-Threading & Java Threads Copyright 2000-2003, Michael J. Ciaraldi](https://reader031.vdocument.in/reader031/viewer/2022013101/56649f1f5503460f94c36f14/html5/thumbnails/5.jpg)
5
Options for Event ListenersApproaches
Separate listener class and object for each button.Everything hard-coded.Decided at compile time.
Same listener class, separate object for each button.
Listener remembers its button.Decided at instantiation time.
One object for all buttonsQueries which button caused event: getSource().Decided at event time.
Different approaches for different button sets.
![Page 6: 1 CS2136: Paradigms of Computation Class 21: Designing Event Listeners Number Parsing Multi-Threading & Java Threads Copyright 2000-2003, Michael J. Ciaraldi](https://reader031.vdocument.in/reader031/viewer/2022013101/56649f1f5503460f94c36f14/html5/thumbnails/6.jpg)
6
Sample Code
Button10.javaButton11.javaButton12.java
On the course Web site.
![Page 7: 1 CS2136: Paradigms of Computation Class 21: Designing Event Listeners Number Parsing Multi-Threading & Java Threads Copyright 2000-2003, Michael J. Ciaraldi](https://reader031.vdocument.in/reader031/viewer/2022013101/56649f1f5503460f94c36f14/html5/thumbnails/7.jpg)
7
Number Parsing
![Page 8: 1 CS2136: Paradigms of Computation Class 21: Designing Event Listeners Number Parsing Multi-Threading & Java Threads Copyright 2000-2003, Michael J. Ciaraldi](https://reader031.vdocument.in/reader031/viewer/2022013101/56649f1f5503460f94c36f14/html5/thumbnails/8.jpg)
8
Parsing Methods in Wrapper Classes
In class Integer, public static int parseInt(String s) throws NumberFormatException. Converts String to integer. Throws NumberFormatException if the
String is not a valid integer. Can also specify radix.
Analogous methods for other wrapper classes.
![Page 9: 1 CS2136: Paradigms of Computation Class 21: Designing Event Listeners Number Parsing Multi-Threading & Java Threads Copyright 2000-2003, Michael J. Ciaraldi](https://reader031.vdocument.in/reader031/viewer/2022013101/56649f1f5503460f94c36f14/html5/thumbnails/9.jpg)
9
Parsing FlexNumbers
Look at the String. If it has ‘{‘, it must be FlexComplex. Otherwise, if it has ‘.’ is must be
FlexDouble. Otherwise it must be FlexLong.
Parse the number parts and invoke the right constructor.
![Page 10: 1 CS2136: Paradigms of Computation Class 21: Designing Event Listeners Number Parsing Multi-Threading & Java Threads Copyright 2000-2003, Michael J. Ciaraldi](https://reader031.vdocument.in/reader031/viewer/2022013101/56649f1f5503460f94c36f14/html5/thumbnails/10.jpg)
10
Multi-Threadingand Java Threads
![Page 11: 1 CS2136: Paradigms of Computation Class 21: Designing Event Listeners Number Parsing Multi-Threading & Java Threads Copyright 2000-2003, Michael J. Ciaraldi](https://reader031.vdocument.in/reader031/viewer/2022013101/56649f1f5503460f94c36f14/html5/thumbnails/11.jpg)
11
Multi-WhateverWhat you want:
A computer that runs multiple programs at the same time.
A program with separate independently-running subtasks.
What you usually have: A single CPU, which can run one
program at a time. Software which makes it appear that
multiple programs are running, by giving them each part of the CPU’s time.
![Page 12: 1 CS2136: Paradigms of Computation Class 21: Designing Event Listeners Number Parsing Multi-Threading & Java Threads Copyright 2000-2003, Michael J. Ciaraldi](https://reader031.vdocument.in/reader031/viewer/2022013101/56649f1f5503460f94c36f14/html5/thumbnails/12.jpg)
12
Historical Terminology
Variations of this capability have been called: Multiprogramming Multiprocessing Multitasking Foreground-background programming Partitions Multithreading
![Page 13: 1 CS2136: Paradigms of Computation Class 21: Designing Event Listeners Number Parsing Multi-Threading & Java Threads Copyright 2000-2003, Michael J. Ciaraldi](https://reader031.vdocument.in/reader031/viewer/2022013101/56649f1f5503460f94c36f14/html5/thumbnails/13.jpg)
13
Current Terminology:Process / Task
A process (or task) is a self-contained instance of a program, running in its own address space.
A multi-tasking operating system (e.g. Unix) runs multiple tasks (processes) at a time. Each thinks it has the CPU to itself. Preemptive multitasking means the OS can
switch tasks at any time. Cooperative multitasking means the OS
must wait for each task to give up the CPU.
![Page 14: 1 CS2136: Paradigms of Computation Class 21: Designing Event Listeners Number Parsing Multi-Threading & Java Threads Copyright 2000-2003, Michael J. Ciaraldi](https://reader031.vdocument.in/reader031/viewer/2022013101/56649f1f5503460f94c36f14/html5/thumbnails/14.jpg)
14
Current Terminology:Threads
A “thread” is a single sequential flow of control within one process. Lighter weight than a separate process. Memory is shared among threads. Typically tie threads to events, e.g.
Button pushTimerMenu Choice
Java supports threads.
![Page 15: 1 CS2136: Paradigms of Computation Class 21: Designing Event Listeners Number Parsing Multi-Threading & Java Threads Copyright 2000-2003, Michael J. Ciaraldi](https://reader031.vdocument.in/reader031/viewer/2022013101/56649f1f5503460f94c36f14/html5/thumbnails/15.jpg)
15
CommunicationBetween Processes
MessagesSignalsSemaphoresSocketsPipesFiles(Possibly) Shared Memory
![Page 16: 1 CS2136: Paradigms of Computation Class 21: Designing Event Listeners Number Parsing Multi-Threading & Java Threads Copyright 2000-2003, Michael J. Ciaraldi](https://reader031.vdocument.in/reader031/viewer/2022013101/56649f1f5503460f94c36f14/html5/thumbnails/16.jpg)
16
CommunicationBetween Threads
In Java, each thread is an object.Threads share the same memory
space.All objects and variables are visible
to a method, subject to the standard scope rules.
![Page 17: 1 CS2136: Paradigms of Computation Class 21: Designing Event Listeners Number Parsing Multi-Threading & Java Threads Copyright 2000-2003, Michael J. Ciaraldi](https://reader031.vdocument.in/reader031/viewer/2022013101/56649f1f5503460f94c36f14/html5/thumbnails/17.jpg)
17
Java Threads
Each thread is an object, so: Define a class which either:
inherits from class Thread. --OR--implements the Runnable interface.
Override the run() method.
![Page 18: 1 CS2136: Paradigms of Computation Class 21: Designing Event Listeners Number Parsing Multi-Threading & Java Threads Copyright 2000-2003, Michael J. Ciaraldi](https://reader031.vdocument.in/reader031/viewer/2022013101/56649f1f5503460f94c36f14/html5/thumbnails/18.jpg)
18
Java Threads II
To create a thread: Instantiate an object with new on the class
you defined. Invoke start() on the thread object.
This initializes the thread and invokes its run() method.
![Page 19: 1 CS2136: Paradigms of Computation Class 21: Designing Event Listeners Number Parsing Multi-Threading & Java Threads Copyright 2000-2003, Michael J. Ciaraldi](https://reader031.vdocument.in/reader031/viewer/2022013101/56649f1f5503460f94c36f14/html5/thumbnails/19.jpg)
19
Java Threads III
No need to explicitly switch between threads. Java does it more-or-less at random.
OK to have multiple thread objects, instantiated from the same and/or different classes.
![Page 20: 1 CS2136: Paradigms of Computation Class 21: Designing Event Listeners Number Parsing Multi-Threading & Java Threads Copyright 2000-2003, Michael J. Ciaraldi](https://reader031.vdocument.in/reader031/viewer/2022013101/56649f1f5503460f94c36f14/html5/thumbnails/20.jpg)
20
The run() Method
Could exit using the return command.Could be an infinite loop.
Will run until the entire program stops.Java will occasionally switch to another thread.
Should use a sleep() or something to keep it from hogging the CPU.Can still be preempted without sleep(), but the
whole system will be less responsive.
![Page 21: 1 CS2136: Paradigms of Computation Class 21: Designing Event Listeners Number Parsing Multi-Threading & Java Threads Copyright 2000-2003, Michael J. Ciaraldi](https://reader031.vdocument.in/reader031/viewer/2022013101/56649f1f5503460f94c36f14/html5/thumbnails/21.jpg)
21
Example:SimpleThread.java
Starts 5 threads.Each thread prints out the numbers
from 5 down to 1.
![Page 22: 1 CS2136: Paradigms of Computation Class 21: Designing Event Listeners Number Parsing Multi-Threading & Java Threads Copyright 2000-2003, Michael J. Ciaraldi](https://reader031.vdocument.in/reader031/viewer/2022013101/56649f1f5503460f94c36f14/html5/thumbnails/22.jpg)
22
A GUI Example
Remember how buttons work. Each button is an object. Create an ActiveListener object for each
button. “add” the ActiveListener object to the
button object. When the user presses the button, the
actionPerformed() method of the ActiveListener is invoked.
![Page 23: 1 CS2136: Paradigms of Computation Class 21: Designing Event Listeners Number Parsing Multi-Threading & Java Threads Copyright 2000-2003, Michael J. Ciaraldi](https://reader031.vdocument.in/reader031/viewer/2022013101/56649f1f5503460f94c36f14/html5/thumbnails/23.jpg)
23
Counter2.java I
main() creates the applet and a window for it to run in.
The applet creates the buttons and a text field.
In the applet is a variable called sp, which holds the reference to the thread object.
![Page 24: 1 CS2136: Paradigms of Computation Class 21: Designing Event Listeners Number Parsing Multi-Threading & Java Threads Copyright 2000-2003, Michael J. Ciaraldi](https://reader031.vdocument.in/reader031/viewer/2022013101/56649f1f5503460f94c36f14/html5/thumbnails/24.jpg)
24
Counter2.java II
When the user presses the Start button, if sp == null (i.e. no thread yet), it starts the new thread.
The thread has a private variable c2 which holds a reference to the main program, so it can access the text field.
When the user presses the Toggle (onOff) button, it invokes invertFlag() on the thread.
![Page 25: 1 CS2136: Paradigms of Computation Class 21: Designing Event Listeners Number Parsing Multi-Threading & Java Threads Copyright 2000-2003, Michael J. Ciaraldi](https://reader031.vdocument.in/reader031/viewer/2022013101/56649f1f5503460f94c36f14/html5/thumbnails/25.jpg)
25
Counter2.java IIIWhen the subtask is instantiated, it runs
start(). The standard start() method invokes the run()
method.The overriding one, not the standard one.
What run() does: Sleep 100 msec. If runFlag is true, increment count and display
it. Repeat forever.
Hitting the Toggle button flips the runFlag.
![Page 26: 1 CS2136: Paradigms of Computation Class 21: Designing Event Listeners Number Parsing Multi-Threading & Java Threads Copyright 2000-2003, Michael J. Ciaraldi](https://reader031.vdocument.in/reader031/viewer/2022013101/56649f1f5503460f94c36f14/html5/thumbnails/26.jpg)
26
An Alternative Approach
Program Counter3.java combines the thread with the main class. Implements Runnable instead of
inheriting from Thread.On the course Web site.
![Page 27: 1 CS2136: Paradigms of Computation Class 21: Designing Event Listeners Number Parsing Multi-Threading & Java Threads Copyright 2000-2003, Michael J. Ciaraldi](https://reader031.vdocument.in/reader031/viewer/2022013101/56649f1f5503460f94c36f14/html5/thumbnails/27.jpg)
27
A More Complex Example:MyCounter4.java
Creates multiple threads Set on command line. Default to 5.
Each thread has a text field and a button.
Counters start and stop.Buttons and fields change color.On the course Web site.
![Page 28: 1 CS2136: Paradigms of Computation Class 21: Designing Event Listeners Number Parsing Multi-Threading & Java Threads Copyright 2000-2003, Michael J. Ciaraldi](https://reader031.vdocument.in/reader031/viewer/2022013101/56649f1f5503460f94c36f14/html5/thumbnails/28.jpg)
28
Next Times
Tomorrow: More threadsThursday:
Java I/O Java Networking
Friday: The Future of JavaMonday: Review for Exam 2Tuesday: Exam 2 (Java)