package com.demo.thread;
public class PrintNumber {
private static Object lock = new Object();
private static int i = 1;
private static int wait = 1;
private static final int TOTAL = 100;
public static void main(String[] args) {
Thread thread1 = new Thread() {
public void run() {
while (i <= TOTAL) {
synchronized (lock) {
if (i % 2 == 1) {
System.out.println("thread1 " + i++);
} else {
lock.notify();
try {
lock.wait(wait);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
};
Thread thread2 = new Thread() {
public void run() {
while (i <= TOTAL) {
synchronized (lock) {
if (i % 2 == 0) {
System.out.println("thread2 " + i++);
} else {
lock.notify();
try {
lock.wait(wait);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
};
thread1.start();
thread2.start();
}
}
package com.demo.thread;
public class PrintNum {
public static void main(String[] args) {
for (int i = 1; i <= 100; ++i) {
PrintOddThread printOddThread = new PrintOddThread(i);
PrintEvenThread printEvenThread = new PrintEvenThread(i);
Thread thread1 = new Thread(printOddThread);
Thread thread2 = new Thread(printEvenThread);
thread1.start();
thread2.start();
}
}
}
class PrintOddThread implements Runnable {
private int i;
public PrintOddThread(int i) {
this.i = i;
}
public void run() {
if (i % 2 == 1) {
System.out.println("thread1 " + i);
}
}
}
class PrintEvenThread implements Runnable {
private int i;
public PrintEvenThread(int i) {
this.i = i;
}
public void run() {
if (i % 2 == 0) {
System.out.println("thread2 " + i);
}
}
}