Java

本类阅读TOP10

·使用MyEclipse开发Struts框架的Hello World!(录像1)
·hibernate配置笔记
·AOP编程入门--Java篇
·linux下Tomcat 5.0.20 与 Apache 2 安装/集成/配置
·在win2003下整合了整合Tomcat5.5+ apache_2.0.53+ mod_jk_2.0.47.dll
·构建Linux下IDE环境--Eclipse篇
·Jsp 连接 mySQL、Oracle 数据库备忘(Windows平台)
·ASP、JSP、PHP 三种技术比较
·Tomcat5.5.9的安装配置
·AWT GUI 设计笔记(二)

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
Java线程入门——定义线程中的 run 方法

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

run 方法是运行线程时需要执行的代码。(你要用代码——也就是 run() 方法——来描述一个处理过程,而不是创建一个表示这个处理过程的对象。在如何理解线程方面,一直存在着争议。这取决于,你是将线程看作是对象还是处理过程。如果你认为它是一个处理过程,那么你就摆脱了“万物皆对象”的 OO 教条。但与此同时,如果你只想让这个处理过程掌管程序的某一部分,那你就没理由让整个类都成为 Runnable 的。有鉴于此,用内部类的形式将线程代码隐藏起来,通常是个更明智的选择。来自TIJ3。)

在 Java 语言中,我们可以通过下列两种方式来实现我们的run 方法:

1、覆盖 java.lang.Threadpublic void run() 方法。

public class SimpleThread extends Thread {

    public SimpleThread(String str) {

        super(str);

    }

    public void run() {

       for (int i = 0; i < 10; i++) {

           System.out.println(i + " " + getName());

           try {

               sleep((long) (Math.random() * 1000));

           } catch (InterruptedException e) {

           }

       }

        System.out.println("DONE! " + getName());

    }

}

调用上面定义的线程:

public class TwoThreadsDemo {

    public static void main(String[] args) {

       new SimpleThread("Jamaica").start();

       new SimpleThread("Fiji").start();

    }

}


2、实现 java.lang.Runnable 接口:

import java.awt.Graphics;

import java.util.*;

import java.text.DateFormat;

import java.applet.Applet;

 

public class Clock extends Applet implements Runnable {

    private Thread clockThread = null;

    public void start() {

       if (clockThread == null) {

           clockThread = new Thread(this, "Clock");

           clockThread.start();

       }

    }

    public void run() {

        Thread myThread = Thread.currentThread();

       while (clockThread == myThread) {

           repaint();

           try {

               Thread.sleep(1000);

           } catch (InterruptedException e) {}

       }

    }

    public void paint(Graphics g) {

        Calendar cal = Calendar.getInstance();

       Date date = cal.getTime();

        DateFormat dateFormatter = DateFormat.getTimeInstance();

        g.drawString(dateFormatter.format(date), 5, 10);

    }

    public void stop() {

        clockThread = null;

    }

}




相关文章

相关软件