1. Start Command Line on Windows.
cmd>path
cmd>java -version
2.Type the following command in command line(Windows).
cmd>copy con RaceCourse.java
3.Copy the following code and Paste into cmd. Press Ctrl+Z and your File gets Saved.
javac -d classes RaceCourse.java
cmd>copy con ThreadRace.java
[paste your your code here]
[Press Ctrl+Z]
cmd>java -classpath classes ThreadRace
- Open cmd(Windows) or terminal(Unix)
- Set Environment Variable JDK_HOME and JRE_HOME on Windows with jdk bin directory(eg. C:\Program Files\Java\jdk1.6.24\bin).
- Set path to add these to two variables
cmd>path
- check javac and java commands in the command Line.
- Try the following two commands in cmd.
cmd>java -version
- If the versions are different the reconfigure your paths
2.Type the following command in command line(Windows).
cmd>copy con RaceCourse.java
3.Copy the following code and Paste into cmd. Press Ctrl+Z and your File gets Saved.
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JPanel;
//THE RACE COURSE TO RUN ON
public class RaceCourse extends JPanel implements Runnable {
private static final long serialVersionUID = 1L;
int threadLength1, threadLength2, threadLength3;
private static final int START_X = 50;
private static final int START_Y = 50;
private static final int INC = 1;
private static final int THREAD_WIDTH = 30;
private static final int THREAD_SEPERATION = 90;
boolean thread1 = false, thread2 = false;
public RaceCourse() {
threadLength1 = threadLength2 = threadLength3 = INC;
setSize(getPreferredSize());
RaceCourse.this.setBackground(Color.white);
}
public Dimension getPreferredSize() {
return new Dimension(600, 400);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
if (thread1) {
g2d.setColor(new Color(200, 20, 20, 255));
g2d.fillRect(START_X, START_Y, threadLength1, THREAD_WIDTH);
}
else if (thread2) {
g2d.setColor(new Color(20, 200, 20, 255));
g2d.fillRect(START_X, START_Y + THREAD_SEPERATION, threadLength2, THREAD_WIDTH);
} else {
g2d.setColor(new Color(20, 20, 200, 255));
g2d.fillRect(START_X, START_Y + 2 * THREAD_SEPERATION, threadLength3, THREAD_WIDTH);
}
}
// A comman run method shared by three Threads.
public void run() {
while (true)
try {
Thread.sleep(100);
System.out.println("Current Thread:"
+ Thread.currentThread().getName());
if (Thread.currentThread().getName().equals("thread1")) {
thread1 = true;
thread2 = false;
threadLength1 = threadLength1 + INC;
repaint(START_X, START_Y, threadLength1, THREAD_WIDTH);
// this.wait();
} else if (Thread.currentThread().getName().equals("thread2")) {
Thread.sleep(100);
// Thread.yield();
thread2 = true;
thread1 = false;
threadLength2 = threadLength2 + INC;
repaint(START_X, START_Y + THREAD_SEPERATION, threadLength2, THREAD_WIDTH);
// this.notify();
} else {
Thread.sleep(400);
thread2 = false;
thread1 = false;
threadLength3 = threadLength3 + INC;
repaint(START_X, START_Y + 2 * THREAD_SEPERATION, threadLength3, THREAD_WIDTH);
// this.wait();
}
}
catch (IllegalMonitorStateException is) {
System.err.println("Error:" + is);
} catch (InterruptedException ie) {
System.err.println("Error:" + ie);
}
}
}
4.Compile the above Codejavac -d classes RaceCourse.java
- Above command compiles the java file and stores into classes folder if it exists(create classes folder next to RaceCourse.java file if it doesn't exist)
- If it compiles successfully without any errors go to next step.
cmd>copy con ThreadRace.java
[paste your your code here]
[Press Ctrl+Z]
import javax.swing.JFrame;
import javax.swing.JScrollPane;
public class ThreadRace extends JFrame {
private static final long serialVersionUID = 1L;
RaceCourse canvas;
public ThreadRace() {
super(" Race Course ");
canvas = new RaceCourse();
setSize(300, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().add(new JScrollPane(canvas));
setVisible(true);
pack();
}
public static void main(String[] args) {
ThreadRace course = new ThreadRace();
Thread thread1 = new Thread(course.canvas, "thread1");
Thread thread2 = new Thread(course.canvas, "thread2");
Thread thread3 = new Thread(course.canvas, "thread3");
thread1.setPriority(Thread.MAX_PRIORITY);
thread2.setPriority(Thread.NORM_PRIORITY);
thread3.setPriority(Thread.MIN_PRIORITY);
thread1.start();
thread2.start();
thread3.start();
}
}
6.Compile ThreadRace.java as shown in step 4- Check if ThreadRace.class and RaceCourse.class file is located in classes folder
cmd>java -classpath classes ThreadRace