Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "10/17/2015Vimal1 Threads By www.PPTSWorld.com. 10/17/2015Vimal2 Why use threads?? It is a powerful programming tool Computer users take it for granted."— Presentation transcript:

1 10/17/2015Vimal1 Threads By www.PPTSWorld.com

2 10/17/2015Vimal2 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!

3 10/17/2015Vimal3 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

4 10/17/2015Vimal4 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.

5 10/17/2015Vimal5 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.

6 10/17/2015Vimal6 Concurrency vs. Parallelism CPU1 CPU2 main run CPU main run main run main run main RAM this.count

7 10/17/2015Vimal7 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.

8 10/17/2015Vimal8 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.

9 10/17/2015Vimal9 Multiple threads

10 10/17/2015Vimal10 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.

11 10/17/2015Vimal11 Implementing thread  start()  run()  To get information from a finished thread is a challenge especially in a multi-threaded system  return - is used

12 10/17/2015Vimal12 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. } }

13 10/17/2015Vimal13 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. } }

14 10/17/2015Vimal14 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. } }

15 10/17/2015Vimal15 cont 1. public static void main(String args[]) {  Thread t1 = new Thread (new TimePrinter(1000, "Fast Guy")); t1.start();  Thread t2 = new Thread (new TimePrinter(3000, "Slow Guy")); t2.start(); 4. } }

16 10/17/2015Vimal16

17 10/17/2015Vimal17 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() {

18 10/17/2015Vimal18 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); }

19 10/17/2015Vimal19 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){} }}

20 10/17/2015Vimal20 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

21 10/17/2015Vimal21 C o n s u m e r. j a v a 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() } }

22 10/17/2015Vimal22 P r o d u c e r. j a v a 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() } }

23 10/17/2015Vimal23 Stock.java 1.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. {

24 10/17/2015Vimal24 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; }

25 10/17/2015Vimal25 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){} }


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

Similar presentations


Ads by Google