eg 11.1.1
class MyThread extends Thread {
private String message;
public MyThread(String message) {
this.message = message;
}
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName() + ": " + this.message + " " + i);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class MultiThreadingExample {
public static void main(String[] args) {
MyThread thread1 = new MyThread("Hello from Thread 1");
MyThread thread2 = new MyThread("Hello from Thread 2");
thread1.start();
thread2.start();
}
}
eg 11.1.1-2
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class MultiProcessExample {
public static void main(String[] args) {
ProcessBuilder processBuilder1 = new ProcessBuilder("notepad.exe");
try {
Process process1 = processBuilder1.start();
System.out.println("Process 1 started.");
ProcessBuilder processBuilder2 = new ProcessBuilder("cmd.exe", "/c", "dir");
Process process2 = processBuilder2.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process2.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println("Process 2 Output: " + line);
}
int exitCode = process2.waitFor();
System.out.println("Process 2 exited with code " + exitCode);
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}