25
05/14/22 Vimal 1 Threads By www.PPTSWorld.com

10/17/2015Vimal1 Threads By . 10/17/2015Vimal2 Why use threads?? It is a powerful programming tool Computer users take it for granted

Embed Size (px)

Citation preview

Page 1: 10/17/2015Vimal1 Threads By . 10/17/2015Vimal2 Why use threads?? It is a powerful programming tool Computer users take it for granted

04/21/23 Vimal 1

Threads

By www.PPTSWorld.com

Page 2: 10/17/2015Vimal1 Threads By . 10/17/2015Vimal2 Why use threads?? It is a powerful programming tool Computer users take it for granted

04/21/23 Vimal 2

Why use threads??It is a powerful programming tool Computer users take it for granted that their

systems can do more than one thing at a time. They assume that they can continue to work in a

word processor, while other applications download files, manage the print queue, and stream audio.

Even a single application is often expected to do more than one thing at a time.

Example of a web server: Many clients accessing….impossible to handle without threads!

Page 3: 10/17/2015Vimal1 Threads By . 10/17/2015Vimal2 Why use threads?? It is a powerful programming tool Computer users take it for granted

04/21/23 Vimal 3

Use of threads cont..

In Internet: 100 simultaneous connections means 100 processes to handle. Just imagine 100 million internet users!!

Similarly with web servers..performance crawls with more simultaneous connections

Page 4: 10/17/2015Vimal1 Threads By . 10/17/2015Vimal2 Why use threads?? It is a powerful programming tool Computer users take it for granted

04/21/23 Vimal 4

Another example

Streaming audio application must simultaneously read the digital audio off the network, decompress it, manage playback, and update its display.

Even the word processor should always be ready to respond to keyboard and mouse events, no matter how busy it is reformatting text or updating the display.

Software that can do such things is known as concurrent software.

Page 5: 10/17/2015Vimal1 Threads By . 10/17/2015Vimal2 Why use threads?? It is a powerful programming tool Computer users take it for granted

04/21/23 Vimal 5

Concurrent programming

The Java platform is designed from the ground up to support concurrent programming, with basic concurrency support in the Java programming language and the Java class libraries.

Since version 5.0, the Java platform has also included high-level concurrency APIs in the java.util.concurrent packages.

Page 6: 10/17/2015Vimal1 Threads By . 10/17/2015Vimal2 Why use threads?? It is a powerful programming tool Computer users take it for granted

04/21/23 Vimal 6

Concurrency vs. ParallelismCPU1 CPU2

main

main

run

CPU

main

run

main

run

mainrun

main

RAM

this.count

Page 7: 10/17/2015Vimal1 Threads By . 10/17/2015Vimal2 Why use threads?? It is a powerful programming tool Computer users take it for granted

04/21/23 Vimal 7

Process & threads In concurrent programming, there are two basic

units of execution: processes and threads. In the Java programming language, concurrent

programming is mostly concerned with threads. However, processes are also important. Threads are light weight processes!

A computer system normally has many active processes and threads. This is true even in systems that only have a single execution core, and thus only have one thread actually executing at any given moment.

Processing time for a single core is shared among processes and threads through an OS feature called time slicing.

Page 8: 10/17/2015Vimal1 Threads By . 10/17/2015Vimal2 Why use threads?? It is a powerful programming tool Computer users take it for granted

04/21/23 Vimal 8

What is a thread?

A thread is like a sequential program.

A single thread has a beginning, a sequence, and an end and at any given time during the runtime of the thread, there is a single point of execution.

However, a thread itself is not a program; it cannot run on its own. Rather, it runs within a program.

Page 9: 10/17/2015Vimal1 Threads By . 10/17/2015Vimal2 Why use threads?? It is a powerful programming tool Computer users take it for granted

04/21/23 Vimal 9

Multiple threads

Page 10: 10/17/2015Vimal1 Threads By . 10/17/2015Vimal2 Why use threads?? It is a powerful programming tool Computer users take it for granted

04/21/23 Vimal 10

Creating Threads

Two ways of creating threads: Extending a class. Implementing an interface

Extending a class is the way Java inherits methods and variables from a parent class. In this case, one can only extend or inherit from a single parent class.

This limitation within Java can be overcome by implementing interfaces, which is the most common way to create threads.

Page 11: 10/17/2015Vimal1 Threads By . 10/17/2015Vimal2 Why use threads?? It is a powerful programming tool Computer users take it for granted

04/21/23 Vimal 11

Implementing thread

start() run()To get information from a finished thread is a

challenge especially in a multi-threaded system return - is used

Page 12: 10/17/2015Vimal1 Threads By . 10/17/2015Vimal2 Why use threads?? It is a powerful programming tool Computer users take it for granted

04/21/23 Vimal 12

Extending a class

1. import java.util.*;2. class TimePrinter extends Thread {3. int pauseTime; 4. String name; 5. public TimePrinter(int x, String n)6. { pauseTime = x; name = n; } 7. public void run()8. { 9. while(true) { 10. try { 11. System.out.println(name + ":" + new

Date(System.currentTimeMillis())); 12. Thread.sleep(pauseTime); } catch(Exception e)

{ }13. } }

Page 13: 10/17/2015Vimal1 Threads By . 10/17/2015Vimal2 Why use threads?? It is a powerful programming tool Computer users take it for granted

04/21/23 Vimal 13

1. public static void main(String args[]) { 2. TimePrinter tp1 = new TimePrinter(1000,

"Fast Guy"); 3. tp1.start(); 4. TimePrinter tp2 = new TimePrinter(3000,

"Slow Guy"); 5. tp2.start(); 6. } }

Page 14: 10/17/2015Vimal1 Threads By . 10/17/2015Vimal2 Why use threads?? It is a powerful programming tool Computer users take it for granted

04/21/23 Vimal 14

Implementing Runnable interface

1. import java.util.*;2. class TimePrinter implements Runnable {3. int pauseTime; 4. String name; 5. public TimePrinter (int x, String n) 6. { pauseTime = x; name = n; } 7. public void run() { while(true) { 8. try { 9. System.out.println(name + ":" + new

Date(System.currentTimeMillis())); Thread.sleep(pauseTime);

10. } catch(Exception e) { }11. } }

Page 15: 10/17/2015Vimal1 Threads By . 10/17/2015Vimal2 Why use threads?? It is a powerful programming tool Computer users take it for granted

04/21/23 Vimal 15

cont

1. public static void main(String args[]) {

2. Thread t1 = new Thread(new TimePrinter(1000, "Fast Guy")); t1.start();

3. Thread t2 = new Thread(new TimePrinter(3000, "Slow Guy")); t2.start();

4. } }

Page 16: 10/17/2015Vimal1 Threads By . 10/17/2015Vimal2 Why use threads?? It is a powerful programming tool Computer users take it for granted

04/21/23 Vimal 16

Page 17: 10/17/2015Vimal1 Threads By . 10/17/2015Vimal2 Why use threads?? It is a powerful programming tool Computer users take it for granted

04/21/23 Vimal 17

Creating Multiple threads

Class newThread implements Runnable{ String name;Thread t;

NewThread(String threadname) { name=threadname; t=newThread(this,name);

System.out.println(“New Thread:”+t); t.start();

}public void run(){

Page 18: 10/17/2015Vimal1 Threads By . 10/17/2015Vimal2 Why use threads?? It is a powerful programming tool Computer users take it for granted

04/21/23 Vimal 18

Cont..

try{

For(int i=00;i>0;i--)

{ System.out.println(name +”:”+i);

Thread.sleep(1000);

}catch(IntrrruptedException e){}

System.out.println(name +’exiting);

}

}

Page 19: 10/17/2015Vimal1 Threads By . 10/17/2015Vimal2 Why use threads?? It is a powerful programming tool Computer users take it for granted

04/21/23 Vimal 19

Cont..Class MultiThreadDemo{

public static void main(String args[]) { new NewThread(“one”);new NewThread(“two”);new NewThread(“three”);try{ Thread.sleep(10000); }catch(InterruptedException e){}}}

Page 20: 10/17/2015Vimal1 Threads By . 10/17/2015Vimal2 Why use threads?? It is a powerful programming tool Computer users take it for granted

04/21/23 Vimal 20

Synchronization

Two or more threads accessing the same data simultaneously may lead to loss of data integrity.

Java uses the concept of semaphore or monitor to enable this.

Monitor is an object used as a mutually exclusive lock.

Synchronized

Page 21: 10/17/2015Vimal1 Threads By . 10/17/2015Vimal2 Why use threads?? It is a powerful programming tool Computer users take it for granted

04/21/23 Vimal 21

Consume r. j ava

1. Class Consumer implements Runnable {2. Stock c;3. Thread t;4. Consumer (Stock c)5. { this.c=c;6. t=new Thread(this,”consumer thread”);7. t.start(); }8. public void run(){9. while(true){10. try{11. t.sleep(750);12. }catch(InterruptedEcception e){}13. c.getStock((int)(Math.random()*100));14. } }15. void stop(){ t.stop() } }

Page 22: 10/17/2015Vimal1 Threads By . 10/17/2015Vimal2 Why use threads?? It is a powerful programming tool Computer users take it for granted

04/21/23 Vimal 22

Producer.java

1. Class Producer implements Runnable {

2. Stock c;

3. Thread t;

4. Producer (Stock c)

5. { this.c=c;

6. t=new Thread(this,”producer thread”);

7. t.start(); }

8. public void run() {

9. while(true) {

10. try{

11. t.sleep(750);

12. }catch(InterruptedExcception e){}

13. c.getStock((int)(Math.random()*100));

14. } }

15. void stop(){ t.stop() } }

Page 23: 10/17/2015Vimal1 Threads By . 10/17/2015Vimal2 Why use threads?? It is a powerful programming tool Computer users take it for granted

04/21/23 Vimal 23

Stock.java1. Class Stock {2. int goods=0;3. Public synchronized void addStock(int i) 4. { goods=goods+i;5. System.out.println(“Stock added:”+i);6. System.out.println(“Present Stock:”+goods);7. notify();8. }9. public synchronised int getStock(int j)10. { while(true)11. {

Page 24: 10/17/2015Vimal1 Threads By . 10/17/2015Vimal2 Why use threads?? It is a powerful programming tool Computer users take it for granted

04/21/23 Vimal 24

• if(goods >=j)• { goods=goods=goods-j;• System.out.println(“Stock taken away:”+i);• System.out.println(“Present Stock:”+goods);• break;• }else {• System.out.println(“Stock not enough:”+i);• System.out.println(“Waiting for stocks to

come:”+goods);• try {• wait();• }catch(InterruptedException e){}• } }• return goods; }

Page 25: 10/17/2015Vimal1 Threads By . 10/17/2015Vimal2 Why use threads?? It is a powerful programming tool Computer users take it for granted

04/21/23 Vimal 25

• public static void main(String args[])• { Stock= new Stock();• Producer p= new Producer(j);• Consumer c=new Consumer(j);• try{• Thread.sleep(10000);• p.stop();• c.stop();• }catch(InterrruptedException e){}• }• }