import java.applet.*;
import java.awt.*;
public class Threads1 extends Applet implements Runnable {
int width, height;
int i = 0;
Thread t = null;
boolean threadSuspended;
// Executed when the applet is first created.
public void init() {
System.out.println("init(): begin");
width = getSize().width;
height = getSize().height;
setBackground( Color.black );
System.out.println("init(): end");
}
// Executed when the applet is destroyed.
public void destroy() {
System.out.println("destroy()");
}
// Executed after the applet is created; and also whenever
// the browser returns to the page containing the applet.
public void start() {
System.out.println("start(): begin");
if ( t == null ) {
System.out.println("start(): creating thread");
t = new Thread( this );
System.out.println("start(): starting thread");
threadSuspended = false;
t.start();
}
else {
if ( threadSuspended ) {
threadSuspended = false;
System.out.println("start(): notifying thread");
synchronized( this ) {
notify();
}
}
}
System.out.println("start(): end");
}
// Executed whenever the browser leaves the page containing the applet.
public void stop() {
System.out.println("stop(): begin");
threadSuspended = true;
}
// Executed within the thread that this applet created.
public void run() {
System.out.println("run(): begin");
try {
while (true) {
System.out.println("run(): awake");
// Here's where the thread does some work
++i; // this is shorthand for "i = i+1;"
if ( i == 10 ) {
i = 0;
}
showStatus( "i is " + i );
// Now the thread checks to see if it should suspend itself
if ( threadSuspended ) {
synchronized( this ) {
while ( threadSuspended ) {
System.out.println("run(): waiting");
wait();
}
}
}
System.out.println("run(): requesting repaint");
repaint();
System.out.println("run(): sleeping");
t.sleep( 1000 ); // interval given in milliseconds
}
}
catch (InterruptedException e) { }
System.out.println("run(): end");
}
// Executed whenever the applet is asked to redraw itself.
public void paint( Graphics g ) {
System.out.println("paint()");
g.setColor( Color.green );
g.drawLine( width, height, i * width / 10, 0 );
}
}
Friday, March 16, 2012
A green line that ticks:
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment