Java语言中线程是一个很重要的部分,线程是操作系统分配 CPU 时间的基本实体。每一个应用程序至少有一个线程,也可以拥有多个线程。线程是程序中的代码流。多个线程可以同时运行,并能共享资源。
(一) 创建多线程有两种方法:
1,建立类 Thread 的子类
2,实现接口 Runnable
Java 语言取消了多重继承,增加了“接口”(interface)的概念。“接口”(interface)是一种特殊的类。当你定义一个类时,可以“实现”(implements)一个(或多个)接口。
小实例代码(引用):
import java.applet.*;
import java.awt.*;
public class k04a extends Applet implements Runnable {
private Thread m_k04a = null;
public k04a()
{
}
public void paint(Graphics g)
{
g.drawString("Running: " + Math.random(), 10, 20);
}
public void start()
{
m_k04a = new Thread(this);
m_k04a.start();
}
public void stop()
{
m_k04a.stop();
m_k04a = null;
}
public void run()
{
while (true)
{
try
{
repaint();
Thread.sleep(200);
}
catch (InterruptedException e)
{
stop();
}
}
}
}
(二)控制线程的生命周期方法总结(共有8个):
start() 启动一个线程
run() 定义该线程的动作
sleep() 使线程睡眠一段时间,毫秒
suspend() 使线程挂起
resume() 恢复挂起的线程
yield() 把线程移到队列的尾部
stop() 结束线程生命周期并执行清理工作
destroy() 结束线程生命周期但不做清理工作
实例源程序(引用):
import java.awt.*;
import java.applet.Applet;
public class testani extends Applet implements Runnable {
Thread runner;
Image imgs[];
int high, y1, y2, y3;
public void init()
{
high = size().height;
y1 = high;
y2 = high*2;
y3 = high*3;
imgs = new Image[10];
for(int i=0;i<3;i++)
imgs[i]=getImage(getCodeBase(),getParameter("image"+(i+1)));
}
public void start()
{
runner = new Thread(this);
runner.start();
}
public void stop()
{
runner.stop();
runner = null;
}
public void run()
{
while (runner != null)
{
try
{
Thread.sleep(100);
repaint();
y1--;
if(y1==0)
{
Thread.sleep(3000);
y2=high;
}
y2--;
if(y2==0)
{
Thread.sleep(3000);
y3=high;
}
y3--;
if(y3==0)
{
Thread.sleep(3000);
y1 = high;
}
}
catch (InterruptedException e){}
}
}
public void paint(Graphics g)
{
g.drawImage(imgs[0], 0, y1, this);
g.drawImage(imgs[1], 0, y2, this);
g.drawImage(imgs[2], 0, y3, this);
}
public void update(Graphics g)
{
paint(g);
}
}
注:线程与进程不同,每个进程都需要操作系统为其分配独立的地址空间。而同一进程中的各个线程是在同一块地址空间中工作。
----end----