Taking Action: Threads

Depending on your operating system and Java-enabled browser you may have noticed that the Mondrian and Flying Line programs tended to hog your CPU. On Windows NT HotJava stopped responding to my commands several thousand iterations into Mondrian, and I had to kill it from the Task List.

The paint loops in both Mondrian and FlyingLines are ideal for a thread , a separate stream of execution that takes place simultaneously and independently of everything else that might be happening (like responding to the programmer's insistence to "Quit!, Damnit!). Without threads an entire program can be held up by one CPU intensive task or, as in Flying Lines, one infinite loop, intentional or otherwise.

As a general rule all CPU intensive tasks should be placed in their own threads. Here's one way to do it.

//Draw infinitely many random rectangles import java.applet.Applet; import java.awt.*; public class ThreadedMondrian extends Applet implements Runnable { int Rect, Rect, RectTop, RectLeft, Applet, Applet; Color RectColor; Thread kicker = null; int pause; public void init() { Dimension d = size(); Applet = d.; Applet = d.; repaint(); } public void paint(Graphics g) { g.setColor(Color.black); g.drawRect(0, 0, Applet-1, Applet-1); for (int i=0; i < 10; i++) { RandomRect(); g.setColor(RectColor); g.fillRect(RectLeft, RectTop, Rect-1, Rect-1); } } public void run() { Thread.currentThread().setPriority(Thread.MIN_PRIORITY); while (true) { // infinite loop repaint(); try { Thread.sleep(100); } catch (Exception e) { } } } public void start() { if (kicker == null) { kicker = new Thread(this); kicker.start(); } } public void stop() { kicker = null; } public void RandomRect() { RectTop = Randomize(Applet); RectLeft = Randomize(Applet); Rect= Randomize(Applet - RectTop); Rect = Randomize(Applet - RectLeft); RectColor = new Color(Randomize(255),Randomize(255),Randomize(255)); } private int Randomize(int range) { double rawResult; rawResult = Math.random(); return (int) (rawResult * range); } }

 

Bhopal news
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

freelance web designer india ecommerce web developer | Ecommerce web design, software developer india | Web hosting India Windows hosting | India web hosting Windows hosting India | India software developer | web designer india