多线程
线程是程序执行的小单位,一个进程可由一个或多个线程组成,实现线程有两种方法,一是继承Thread类创建线程类,二是实现Runnable接口创建线程类
第一种:继承Thread类创建线程类
首先定义类继承Thread类,并重写Thread类的run()方法,该run()方法的方法体就 代表了线程需要完成的任务。因此把run()方法称为线程执行体;然后创建Thread子类的实例,即创建了线程对象;最后在主方法体里调用线程对象的start()方法来启动该线程。
示例代码:
public class RunnableThreadDemo {
public static void main(String[] args) {
//创建Runnable实现类的实例
MyThread2 myThread = new MyThread2();
//创建Thread类,并把Runnable实现类的实例作为参数
Thread thread1 = new Thread(myThread);
Thread thread2 = new Thread(myThread);
//start() 方法启动线程
thread1.start();
thread2.start();
}
}
第二种:实现Runnable接口创建线程类
首先定义类实现Runnable接口,并重写Runnable接口的run()方法,该run()方法的 方法体就代表了线程需要完成的任务; 然后创建Runnable实现类的实例,并以此实例作为Thread的target来创建Thread对 象,该Thread对象才是真正的线程对象。 最后在主方法体里调用该Thread对象的start()方法来启动该线程。
示例代码:
class MyThread2 implements Runnable{
@Override
public void run() {
// 实现Runnable接口的,无法直接使用getId(),getName()等方法
// 需要使用Thread.currentThread() 来获取到当前对象才行
System.out.println("线程的id:" + Thread.currentThread().getId());
System.out.println("线程的名称:" + Thread.currentThread().getName());
for (int i = 0; i < 50; i++) {
System.out.println("线程的id:" + Thread.currentThread().getId()
+ " 线程的名称:" + Thread.currentThread().getName());
}
}
}