本篇博客:JAVA 线程的介绍与使用
线程的创建
线程是程序中的执行流。
一个执行流是CPU运行程序代码并操作程序的数据所形成的。
因此,线程被认为是CPU为主体的行为。
线程的创建共有两个方法
通过实现Runnable接口创建线程
实现步骤
(1)定义一个类实现Runnable接口,即在该类中提供run()方法的实现。
(2)把Runnable的一个实例作为参数传递给Thread类的一个构造方法,该实例对象提供线程体run()。
代码举例
public class ThreadTest {
public static void main(String[] args) {
Thread t1=new Thread(new Hello());
Thread t2=new Thread(new Hello());
t1.start();
t2.start();
}
}
class Hello implements Runnable{
int i;
public void run() {
while(true) {
System.out.println("Hello"+i++);
if(i==5) break;
}
}
}
运行结果
(相同代码每次运行产生的结果可能会有所不同)
下面是某次运行的结果截图:
通过继承Thread类创建线程
实现步骤
(1)从Thread类派生子类,并重写其中的run()方法定义线程体。
(2)创建该子类的对象创建线程。
代码举例
public class ThreadTest2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Hello1 t1=new Hello1();
Hello1 t2=new Hello1();
t1.start();
t2.start();
}
}
class Hello1 extends Thread{
int i;
public void run() {
while(true) {
System.out.println("Hello"+i++);
if(i==5)break;
}
}
}
运行结果
(相同代码在不同电脑可能出现的结果会存在不同)
下面是某次运行的结果截图:
线程常见的基本控制方法
1.sleep()
sleep()方法能够把CPU让优先级比其低的线程。该方法使一个线程运行暂停一段固定的时间。在休眠时间内,线程将不运行。
sleep()方法的格式:
static void sleep(int millsecond)//休眠时间以毫秒为单位
static void sleep(int millsecond,int nanosecond)//休眠时间是指定的毫秒数与纳秒数之和
2.stop()
当线程完成运行并结束后,将不能再运行。线程除正常运行结束外,还可以用其他方法控制使其停止运行。用stop()方法,强制终止线程。但是该方法的调用容易造成线程的不统一,因此不提倡采用该方法
3.isAlive()
有时线程的状态可能未知,用isAlive()测试线程以确定线程是否活着。该方法返回值为true意味着线程已经启动但还没有运行结束。