实现多线程的两个方法
通过继承Thread类并重写该类的 run()方法,并调用start()方法来开启线程任务,因此必须创建一个Thead类的子类。
然后把线程要执行的代码写入到run()方法,再调用start()方法启动线程。
示例:
//继承Thread类
public class thread extends Thread{
public static void main(String[] args) {
thread t1 = new thread();//创建一个线程实例
t1.start();//执行线程
for(int i = 0;i<5;i++){
System.out.println("主线程"+i);
}
}
@Override
public void run() {
//线程类必须有run()方法
for(int i = 0;i<5;i++){
System.out.println("子线程"+i);
}
}
}
运行结果
子线程0
子线程1
主线程0
子线程2
主线程1
主线程2
主线程3
主线程4
子线程3
子线程4
Process finished with exit code 0
可以看到子线程在执行两次之后主线程才执行,这里比较明显可以看出来多线程的效果
二、实现Runnable
通过实现接口创建线程的方法,通过生成实现Runnable接口的类创建多线程。该接口只定义了一个run()方法,因此必须在新类中实现它,还必须创建Thread类的实例。
示例:
//继承Thread类
public class thread implements Runnable{
@Override
public void run() {//重写run方法
for(int i = 0;i<5;i++){
System.out.println("子线程"+i);
}
}
public static void main(String[] args) {
thread t1 = new thread();//创建任务
Thread t = new Thread(t1);//创建线程
t.start();
for(int i = 0;i<5;i++){
System.out.println("主线程"+i);
}
}
}
运行结果:
子线程0
主线程0
子线程1
主线程1
子线程2
主线程2
子线程3
主线程3
子线程4
主线程4
Process finished with exit code 0
常用的几个方法:
t.start();//启动线程
t.currentThread();//获取当前线程对象
t.setName("t2");//设置线程名称
t.getName();//获取线程名称
t.sleep(1000,0);//线程休眠,括号内为两参,第一个参数为毫秒,第二个为纳秒
//sleep会造成线程阻塞,因此需要抛出异常