KEMBAR78
Java Programming - 08 java threading | PDF
Module 08 – Java Threading
Danairat T.
Line ID: Danairat
FB: Danairat Thanabodithammachari
+668-1559-1446
Fundamental Java Programming
The Course Outline
Module 01 – Introduction to Java
Module 02 – Basic Java Programming
Module 03 – Control Flow and Exception Handling
Module 04 – Object Oriented in Java
Module 05 – Java Package and Access Control
Module 06 – Java File IO
Module 07 – Java Networking
Module 08 – Java Threading
Module 08 – Java Threading
• Processes
• Threads
• Java main method as a starting thread
• Creating Thread with extending Thread class
• Creating Thread with implementing Runnable interface
• Java Thread Priority
• Network Server Thread Programming
Processes
A process has a self-contained execution environment.
A process generally has a complete, private set of
basic run-time resources; in particular, each process
has its own memory space.
Processes are often seen as synonymous with
programs or applications. However, what the user sees
as a single application may in fact be a set of
cooperating processes. To facilitate communication
between processes, most operating systems support
Inter Process Communication (IPC) resources, such as
pipes and sockets.
Threads
Multithreaded execution is an essential feature of
the Java platform. Every application has at least
one thread. From the application programmer's
point of view, you start with just one thread,
called the main thread. This thread has the ability
to create additional threads.
Eg. Two Threads are running in
a single core processor
Java main method as a starting thread
class TypicalClass {
public void aMethod() {
System.out.println(Thread.currentThread());
}
public static void main(String[] args) {
// main() is run in a single thread
System.out.println(Thread.currentThread());
TypicalClass hWorld = new TypicalClass();
hWorld.aMethod();
}
} Thread[main,5,main]
Thread[main,5,main]
Defining and Starting a Thread
1.) Runnable Interface. The Runnable interface defines a single
method, run, meant to contain the code executed in the thread.
The Runnable object is passed to the Thread constructor,
public class HelloRunnable implements Runnable {
public void run() {
System.out.println(Thread.currentThread());
System.out.println("Hello from a thread!");
}
public static void main(String args[]) {
System.out.println(Thread.currentThread());
(new Thread(new HelloRunnable())).start();
}
}
Thread[main,5,main]
Thread[Thread-0,5,main]
Hello from a thread!
Defining and Starting a Thread
2.) Subclass Thread. The Thread class itself implements
Runnable, though its run method does nothing. An application
can subclass Thread, providing its own implementation of run,
public class HelloThread extends Thread {
public void run() {
System.out.println(Thread.currentThread());
System.out.println("Hello from a thread!");
}
public static void main(String args[]) {
System.out.println(Thread.currentThread());
(new HelloThread()).start();
}
}
Thread[main,5,main]
Thread[Thread-0,5,main]
Hello from a thread!
Thread Priority
package BasicThread;
public class ThreadPriorityDemo extends Thread{
ThreadPriorityDemo(String name) {
super(name);
}
public void run() {
for (int i = 0; i<100; i++) System.out.print(getName());
}
public static void main(String args[]) {
ThreadPriorityDemo t01 = new ThreadPriorityDemo("T01");
ThreadPriorityDemo t02 = new ThreadPriorityDemo("T02");
t01.start();
t02.start();
t02.setPriority(10); // 1 min, 5 default, 10 max
}
}
Network Server Thread Programming
import java.io.*;
import java.net.*;
public class MyServerThread extends Thread {
ServerSocket s;
public MyServerThread() throws Exception {
super();
// Register service on port 1234
s = new ServerSocket(1234);
}
public void run() {
try {
while (true) {
Socket s1 = s.accept(); // Wait and accept a connection
// Read input from client
ObjectInputStream objInputStream = new
ObjectInputStream(s1.getInputStream());
Customer cust1 = (Customer)objInputStream.readObject();
cust1.setCollectedPoints(3000); // Dummy result
// Write result to client
OutputStream s1out = s1.getOutputStream();
ObjectOutputStream objOutputStream = new
ObjectOutputStream(s1out);
objOutputStream.writeObject(cust1);
// Close the connection, but not the server socket
objOutputStream.close();
s1out.close();
objInputStream.close();
s1.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
MyServerThread myServerThread = new MyServerThread();
myServerThread.start();
}
}
Client Test
import java.net.*;
import java.io.*;
public class MyClient2 {
public static void main(String[] args) throws Exception {
// Open your connection to a server, at port 1234
Socket s1 = new Socket("127.0.0.1", 1234);
// Write object to the socket server
Customer cust1 = new Customer();
cust1.setName("Somchai");
ObjectOutputStream objOutputStream =
new ObjectOutputStream(s1.getOutputStream());
objOutputStream.writeObject(cust1);
// Get result from server
InputStream s1In = s1.getInputStream();
ObjectInputStream objInputStream = new
ObjectInputStream(s1In);
Customer custResult =
(Customer)objInputStream.readObject();
System.out.println(custResult.getName() + " has " +
custResult.getCollectedPoints() + " points");
// When done, just close the connection and exit
objInputStream.close();
s1In.close();
objOutputStream.close();
s1.close();
}
}
Supported Class – Customer Data Object
import java.io.Serializable;
public class Customer implements Serializable{
private String name;
private int collectedPoints;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setCollectedPoints(int
collectedPoints) {
this.collectedPoints = collectedPoints;
}
public int getCollectedPoints() {
return collectedPoints;
}
}
Danairat T.
Line ID: Danairat
FB: Danairat Thanabodithammachari
+668-1559-1446
Thank you

Java Programming - 08 java threading

  • 1.
    Module 08 –Java Threading Danairat T. Line ID: Danairat FB: Danairat Thanabodithammachari +668-1559-1446
  • 2.
    Fundamental Java Programming TheCourse Outline Module 01 – Introduction to Java Module 02 – Basic Java Programming Module 03 – Control Flow and Exception Handling Module 04 – Object Oriented in Java Module 05 – Java Package and Access Control Module 06 – Java File IO Module 07 – Java Networking Module 08 – Java Threading
  • 3.
    Module 08 –Java Threading • Processes • Threads • Java main method as a starting thread • Creating Thread with extending Thread class • Creating Thread with implementing Runnable interface • Java Thread Priority • Network Server Thread Programming
  • 4.
    Processes A process hasa self-contained execution environment. A process generally has a complete, private set of basic run-time resources; in particular, each process has its own memory space. Processes are often seen as synonymous with programs or applications. However, what the user sees as a single application may in fact be a set of cooperating processes. To facilitate communication between processes, most operating systems support Inter Process Communication (IPC) resources, such as pipes and sockets.
  • 5.
    Threads Multithreaded execution isan essential feature of the Java platform. Every application has at least one thread. From the application programmer's point of view, you start with just one thread, called the main thread. This thread has the ability to create additional threads. Eg. Two Threads are running in a single core processor
  • 6.
    Java main methodas a starting thread class TypicalClass { public void aMethod() { System.out.println(Thread.currentThread()); } public static void main(String[] args) { // main() is run in a single thread System.out.println(Thread.currentThread()); TypicalClass hWorld = new TypicalClass(); hWorld.aMethod(); } } Thread[main,5,main] Thread[main,5,main]
  • 7.
    Defining and Startinga Thread 1.) Runnable Interface. The Runnable interface defines a single method, run, meant to contain the code executed in the thread. The Runnable object is passed to the Thread constructor, public class HelloRunnable implements Runnable { public void run() { System.out.println(Thread.currentThread()); System.out.println("Hello from a thread!"); } public static void main(String args[]) { System.out.println(Thread.currentThread()); (new Thread(new HelloRunnable())).start(); } } Thread[main,5,main] Thread[Thread-0,5,main] Hello from a thread!
  • 8.
    Defining and Startinga Thread 2.) Subclass Thread. The Thread class itself implements Runnable, though its run method does nothing. An application can subclass Thread, providing its own implementation of run, public class HelloThread extends Thread { public void run() { System.out.println(Thread.currentThread()); System.out.println("Hello from a thread!"); } public static void main(String args[]) { System.out.println(Thread.currentThread()); (new HelloThread()).start(); } } Thread[main,5,main] Thread[Thread-0,5,main] Hello from a thread!
  • 9.
    Thread Priority package BasicThread; publicclass ThreadPriorityDemo extends Thread{ ThreadPriorityDemo(String name) { super(name); } public void run() { for (int i = 0; i<100; i++) System.out.print(getName()); } public static void main(String args[]) { ThreadPriorityDemo t01 = new ThreadPriorityDemo("T01"); ThreadPriorityDemo t02 = new ThreadPriorityDemo("T02"); t01.start(); t02.start(); t02.setPriority(10); // 1 min, 5 default, 10 max } }
  • 10.
    Network Server ThreadProgramming import java.io.*; import java.net.*; public class MyServerThread extends Thread { ServerSocket s; public MyServerThread() throws Exception { super(); // Register service on port 1234 s = new ServerSocket(1234); } public void run() { try { while (true) { Socket s1 = s.accept(); // Wait and accept a connection // Read input from client ObjectInputStream objInputStream = new ObjectInputStream(s1.getInputStream()); Customer cust1 = (Customer)objInputStream.readObject(); cust1.setCollectedPoints(3000); // Dummy result // Write result to client OutputStream s1out = s1.getOutputStream(); ObjectOutputStream objOutputStream = new ObjectOutputStream(s1out); objOutputStream.writeObject(cust1); // Close the connection, but not the server socket objOutputStream.close(); s1out.close(); objInputStream.close(); s1.close(); } } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) throws Exception { MyServerThread myServerThread = new MyServerThread(); myServerThread.start(); } }
  • 11.
    Client Test import java.net.*; importjava.io.*; public class MyClient2 { public static void main(String[] args) throws Exception { // Open your connection to a server, at port 1234 Socket s1 = new Socket("127.0.0.1", 1234); // Write object to the socket server Customer cust1 = new Customer(); cust1.setName("Somchai"); ObjectOutputStream objOutputStream = new ObjectOutputStream(s1.getOutputStream()); objOutputStream.writeObject(cust1); // Get result from server InputStream s1In = s1.getInputStream(); ObjectInputStream objInputStream = new ObjectInputStream(s1In); Customer custResult = (Customer)objInputStream.readObject(); System.out.println(custResult.getName() + " has " + custResult.getCollectedPoints() + " points"); // When done, just close the connection and exit objInputStream.close(); s1In.close(); objOutputStream.close(); s1.close(); } }
  • 12.
    Supported Class –Customer Data Object import java.io.Serializable; public class Customer implements Serializable{ private String name; private int collectedPoints; public void setName(String name) { this.name = name; } public String getName() { return name; } public void setCollectedPoints(int collectedPoints) { this.collectedPoints = collectedPoints; } public int getCollectedPoints() { return collectedPoints; } }
  • 13.
    Danairat T. Line ID:Danairat FB: Danairat Thanabodithammachari +668-1559-1446 Thank you