import java.io.*; public class ThreadTestd extends Thread { private Point2d i; private char ch; public static void main(String[] args) { Point2d temp = new Point2d (10, 0); System.out.println ("Hello vaue of point is : " + temp); ThreadTestd tt = new ThreadTestd('a', temp); ThreadTestd tt2 = new ThreadTestd('b', temp); ThreadTestd tt3 = new ThreadTestd('c', temp); ThreadTestd tt4 = new ThreadTestd('d', temp); System.out.println ("Before Joins- Point is: " + temp); try{ tt.join(); } catch (Exception e) {} try{ tt2.join(); } catch (Exception e) {} try{ tt3.join(); } catch (Exception e) {} try{ tt4.join(); } catch (Exception e) {} System.out.println ("Goodbye- Point is: " + temp); } public ThreadTestd(char cParm, Point2d iparm) { //i = 10; i = iparm; ch = cParm; start(); //i += 2; //i.setX(i.getX() + 2); System.out.println ("From original thread " + ch + ", i: " + i); } public void run () { int y = 0; if (ch == 'a') y = 1; if (ch == 'b') y = 2; if (ch == 'c') y = -2; if (ch == 'd') y = -1; System.out.println ("From new thread " + ch + ", i: " + i); for (int j = 0 ; j < 1000000; j++) i.setX(i.getX() + y); System.out.println ("Goodbye from thread " + ch + ", i: " + i); } }