Threads.

Slides:



Advertisements
Similar presentations
13/04/2015Client-server Programming1 Block 6: Threads 1 Jin Sa.
Advertisements

Unit 141 Threads What is a Thread? Multithreading Creating Threads – Subclassing java.lang.Thread Example 1 Creating Threads – Implementing java.lang.Runnable.
CS220 Software Development Lecture: Multi-threading A. O’Riordan, 2009.
Programming in Java; Instructor:Alok Mehta Threads1 Programming in Java Threads.
Concurrency Java Threads. Fundamentals Concurrency defines parallel activity Synchronization is necessary in order for parallel activities to share results.
A Bridge to Your First Computer Science Course Prof. H.E. Dunsmore Concurrent Programming Threads Synchronization.
220 FINAL TEST REVIEW SESSION Omar Abdelwahab. INHERITANCE AND POLYMORPHISM Suppose you have a class FunClass with public methods show, tell, and smile.
Java Programming: Advanced Topics
Lecture 5 : JAVA Thread Programming Courtesy : MIT Prof. Amarasinghe and Dr. Rabbah’s course note.
Quick overview of threads in Java Babak Esfandiari (extracted from Qusay Mahmoud’s slides)
GUI programming Graphical user interface-based programming.
1 Tutorial: CSI 3310 Dewan Tanvir Ahmed SITE, UofO.
Threads in Java. Processes and Threads Processes –A process has a self-contained execution environment. –Has complete set of runtime resources including.
Concurrent Programming and Threads Threads Blocking a User Interface.
Multithreading in Java Sameer Singh Chauhan Lecturer, I. T. Dept., SVIT, Vasad.
Introduction to Threads Session 01 Java Simplified / Session 14 / 2 of 28 Objectives Define a thread Define multithreading List benefits of multithreading.
Multithreading in JAVA
1 G53SRP: Clocks and Time in Java Chris Greenhalgh School of Computer Science.
Threads. Story so far  Our programs have consisted of single flows of control Flow of control started in the first statement of method main() and worked.
Threading and Concurrency COM379T John Murray –
Concurrent Computing CSCI 201L Jeffrey Miller, Ph.D. HTTP :// WWW - SCF. USC. EDU /~ CSCI 201 USC CSCI 201L.
© Wang Bin 2004 Java Threads. © Wang Bin 2004 In this lesson, you will learn to: u Define the concepts of threads and multithreading  Identify the functions.
Multithreaded programming  Java provides built-in support for multithreaded programming. A multithreaded program contains two or more parts that can run.
Parallel Processing (CS526) Spring 2012(Week 8).  Shared Memory Architecture  Shared Memory Programming & PLs  Java Threads  Preparing the Environment.
Chapter11 Concurrent. 集美大学 计算机工程学院 Java 程序设计 年 第二版 Concurrent ●Computer users take it for granted that their systems can do more than one thing.
Multithreading. Multitasking The multitasking is the ability of single processor to perform more than one operation at the same time Once systems allowed.
Threads b A thread is a flow of control in a program. b The Java Virtual Machine allows an application to have multiple threads of execution running concurrently.
 It is a pure oops language and a high level language.  It was developed at sun microsystems by James Gosling.
Java Thread Programming
Threads.
Multithreaded applets
Multithreading / Concurrency
Multithreading Lec 23.
Chapter 13: Multithreading
Object-Oriented Programming Threads
Multi Threading.
Java Multithreading.
Object-Orientated Analysis, Design and Programming
Animation 12-Sep-18.
Chapter 19 Java Never Ends
Multithreading in Java
Animation 6-Nov-18.
Threads Chate Patanothai.
Threads II IS
Animation 15-Nov-18.
Graphical user interface-based programming
Animation 18-Nov-18.
CSC 113 Tutorial QUIZ I.
Java Based Techhnology
Principles of Software Development
Multithreading.
13: Concurrency Definition:  A thread is a single sequential flow of control within a program. Some texts use the name lightweight process instead of thread.
Multithreaded Programming
Java Threads (Outline)
Programming with Shared Memory Java Threads and Synchronization
Programming with Shared Memory Java Threads and Synchronization
Java Threads (Outline)
COP 4610L: Applications in the Enterprise Spring 2005
21 Threads.
Animation 25-Feb-19.
Constructors, GUI’s(Using Swing) and ActionListner
Chapter 15 Multithreading
Computer Science 2 06A-Java Multithreading
Threads in Java James Brucker.
Multithreading in java.
Threads and Multithreading
Representation and Management of Data on the Internet
CMSC 202 Threads.
A type is a collection of values
Java Chapter 3 (Estifanos Tilahun Mihret--Tech with Estif)
Presentation transcript:

Threads

Story so far Our programs have consisted of single flows of control Flow of control started in the first statement of method main() and worked its way statement by statement to the last statement of method main() Flow of control could be passed temporarily to other methods through invocations, but the control returned to main() after their completion Programs with single flows of control are known as sequential processes

Processes The ability to run more than one process at the same time is an important characteristic of modern operating systems A user desktop may be running a browser, programming IDE, music player, and document preparation system Java supports the creation of programs with concurrent flows of control – threads Threads run within a program and make use of its resources in their execution Lightweight processes

Processes

Multithread processing

Timer and TimerTask Among others, Java classes java.util.Timer and java.util.TimerTask support the creation and scheduling of threads Abstract class Timer has methods for creating threads after either some specified delay or at some specific time public void schedule(TimerTask task, long m) Runs task.run() after waiting m milliseconds. public void schedule(TimerTask task, long m, long n) Runs task.run() after waiting m milliseconds. It then repeatedly reruns task.run() every n milliseconds. public void schedule(TimerTask task, Date y) Runs task.run() at time t. A thread can be created By extending TimerTask and specifying a definition for abstract method run()

Running after a delay Class DisplayCharSequence extends TimerTask to support the creation of a thread that displays 20 copies of some desired character (e.g., “H”, “A”, or “N”)

Using DisplayCharSequence public static void main(String[] args) { DisplayCharSequence s1 = new DisplayCharSequence('H'); DisplayCharSequence s2 = new DisplayCharSequence('A'); DisplayCharSequence s3 = new DisplayCharSequence('N'); }

Defining DisplayCharSequence import java.util.*; public class DisplayCharSequence extends TimerTask { private char displayChar; Timer timer; public DisplayCharSequence(char c) { displayChar = c; timer = new Timer(); timer.schedule(this, 0); } public void run() { for (int i = 0; i < 20; ++i) { System.out.print(displayChar); timer.cancel();

Implementing a run() method A subclass implementation of TimerTask’s abstract method run() has typically two parts First part defines the application-specific action the thread is to perform Second part ends the thread The thread is ended when the application-specific action has completed

Running repeatedly Example Having a clock face update every second public static void main(String[] args) { SimpleClock clock = new SimpleClock(); }

public class SimpleClock extends TimerTask { final static long MILLISECONDS_PER_SECOND = 1000; private JFrame window = new JFrame("Clock"); private Timer timer = new Timer(); private String clockFace = ""; public SimpleClock() { window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); window.setSize(200, 60); Container c = window.getContentPane(); c.setBackground(Color.white); window.setVisible(true); timer.schedule(this, 0, 1*MILLISECONDS_PER_SECOND); } public void run() { Date time = new Date(); Graphics g = window.getContentPane().getGraphics(); g.setColor(Color.WHITE); g.drawString(clockFace, 10, 20); clockFace = time.toString(); g.setColor(Color.BLUE); The schedule() method invoked by SimpleClock is different from the method invoked by DisplayCharSequence. That schedule() method initiated a single thread run. The schedule() method invoked by SimpleClock causes a thread to be first run after a delay of 0 milliseconds (i.e., immediately) and then rerun every second. The thread action associated with a SimpleClock is specified by its method run(). // run(): updates clock display public void run() { Date time = new Date(); Graphics g = window.getContentPane().getGraphics(); g.setColor(Color.WHITE); g.drawString(clockFace, 10, 20); clockFace = time.toString(); g.setColor(Color.BLUE); } Method run() first determines the current time by invoking a Date constructor. The GUI then is updated to reflect the current time. To do so, the method first redraws the previous time display using the background color. The redrawing effectively erases the only time display. Instance variable clockFace then is updated to reflect the current time and the new time then is rendered using the foreground color. There is no subsequent cancellation of the thread, because GUI updates are to occur every second. For method main() of program SimpleClock.java to accomplish its task, it only needs to create a SimpleClock instance. // main(): application entry point public static void main(String[] args) { SimpleClock clock = new SimpleClock();

SimpleClock scheduling

Running at a chosen time Example Scheduling calendar pop-ups using class DisplayAlert

Using DisplayAlert public static void main(String[] args) { Calendar c = Calendar.getInstance(); c.set(Calendar.HOUR_OF_DAY, 9); c.set(Calendar.MINUTE, 30); c.set(Calendar.SECOND, 0); Date studentTime = c.getTime(); c.set(Calendar.HOUR_OF_DAY, 18); c.set(Calendar.MINUTE, 15); Date danceTime = c.getTime(); DisplayAlert alert1 = new DisplayAlert( "Prospective student meeting", studentTime); DisplayAlert alert2 = new DisplayAlert( "Dance recital", danceTime); }

Defining DisplayAlert import javax.swing.JOptionPane; import java.awt.*; import java.util.*; public class DisplayAlert extends TimerTask { private String message; private Timer timer; public DisplayAlert(String s, Date t) { message = s + ": " + t; timer = new Timer(); timer.schedule(this, t); } public void run() { JOptionPane.showMessageDialog(null, message); timer.cancel();

Sleeping Threads can be used to pause a program for a time Standard class java.lang.Thread has a class method sleep() for pausing a flow of control public static void sleep(long n) throws InterruptedException Pauses the current thread for n milliseconds. It then throws an InterruptedException.

Sleeping example Code Date t1 = new Date(); System.out.println(t1); try { Thread.sleep(10000); } catch (InterruptedException e) { Date t2 = new Date(); System.out.println(t2); Output Fri Jan 31 19:29:45 EST 2003 Fri Jan 31 19:29:55 EST 2003