继承Thread类创建线程
Thread类是Java类库提供的用于创建线程的类,包含在java.lang包中。
继承Thread类创建线程的步骤:
- 创建Thread类的子类,在该子类中重写run()方法;
- 创建该子类的对象;
- 子类对象调用start()方法启动线程;程序运行后,将自动执行子类中的run()方法。
import java.util.*;
//输出0-99的随机整数
public class Demo
{
public static void main(String[] args)
CreateNumber t = new CreateNumber();
t.start();
}
class CreateNumber extends Thread
{
protected int num;
public void run()//这个线程的使命和任务
{
for(int i=1;i<=5;i++)
{
num = (int)(Math.random()*100);
System.out.println(num);
try{ Thread.sleep(1000); }
catch(InterruptedException e){}
}
}
}
实现Runnable接口创建线程(常用)
使用Thread类的一个构造方法来创建线程Thread(Runnable task):
- 创建一个实现Runnable接口的类,在类中实现run()方法;
- 创建该类的对象,将该对象传递给Thread(Runnable task)作为实参创建线程对象;
- 线程对象调用start()方法启动目标线程;程序运行后,将自动执行对象中的run()方法。
import java.util.*;
//输出0-99的随机整数
public class Demo
{
public static void main(String[] args)
CreateNumber task = new CreateNumber();
Thread t = new Thread(task);
t.start();
}
class CreateNumber implements Runnable
{
protected int num;
public void run()
{
for(int i=1;i<=5;i++)
{
num = (int)(Math.random()*100);
System.out.println(num);
try{ Thread.sleep(1000); }
catch(InterruptedException e){}
}
}
}
实现Runnable接口创建线程的优点:
- 由于Java不支持多继承,如果使用继承Thread类的方法来创建线程,这个类就不可以再继承其他的类
- 实现Runnable接口创建线程为以后扩展其他类留下可能,是一种更为灵活也更常用的方法。
Thread类的主要方法
1.Thread(String s)
-Thread的构造方法,用于构造一个名字为s的线程。
-例如:Thread t = new Thread(“myThread”);
2.Thread()
-Thread的构造方法,用于构造一个名字为Thread-加上一个数字的线程,如Thread-0、Thread-1、Thread-2…等。
3.start()
-线程对象通过调用start()方法启动线程,使它从新建状态进入到就绪状态排队等候CPU时间片。
4.run()
-用来定义线程对象被调用后所自动执行的操作,是线程的使命所在。
5.setName(String s)
-用于设置线程的名称。
6.getName()
-用于返回线程的名称。
7.toString()
-返回一个包含了线程名称、线程优先级别的线程所属线程组的字符串。
8.currentThread()
-Thread类的类方法,返回一个当前正在运行状态中的线程对象的引用。
9.isAlive()
-测试当前线程是否处于活动的状态。新建的线程再调用start()方法前,isAlive()返回false;
在调用了start方法后,直到run()方法结束之前,isAlive()返回true;
run()方法运行结束,isAlive()返回false。
10.sleep(int millisecond)
-Thread类的类方法,使线程休眠一段由参数millisecond指定长度的时间,单位为毫秒。当线程休眠时会放弃CPU的使用权。如果一个线程在休眠期间被打断,将引发一个InterruptedException异常。
11.interrupt()
-线程对象可以通过调用interrupt()方法中断本线程的休眠,从而让该线程进入就绪状态。