> 在 Java 中实现多线程有两种手段,一种是继承 Thread 类,另一种就是实现 Runnable 接口。下面我们就分别来介绍这两种方式的使用。
package Thread;
public class MyThread implements Runnable { // 实现Runnable接口,作为线程的实现类
private String name; // 表示线程的名称
MyThread(String name) {
this.name = name; // 通过构造方法配置name属性
}
// TODO 覆写run()方法,作为线程 的操作主体
@Override
public void run() {
for (int i = 0; i < 4; i++) {
System.out.println(name + "运行,i = " + i);
}
}
public static void main(String[] args) {
MyThread mt1 = new MyThread("线程A"); // 实例化对象
MyThread mt2 = new MyThread("线程B"); // 实例化对象
Thread t1 = new Thread(mt1); // 实例化Thread类对象
Thread t2 = new Thread(mt2); // 实例化Thread类对象
t1.start(); // 启动多线程
t2.start(); // 启动多线程
// 线程A运行,i = 0
// 线程A运行,i = 1
// 线程A运行,i = 2
// 线程B运行,i = 0
// 线程B运行,i = 1
// 线程B运行,i = 2
// 线程B运行,i = 3
// 线程A运行,i = 3
}
}
package Thread;
public class MyThread extends Thread { // 继承Thread类,作为线程的实现类
private String name; // 表示线程的名称
public MyThread(String name) {
this.name = name; // 通过构造方法配置name属性
}
public void run() { // 覆写run()方法,作为线程 的操作主体
for (int i = 0; i < 4; i++) {
System.out.println(name + "运行,i = " + i);
}
}
public static void main(String[] args) {
MyThread mt1 = new MyThread("线程A "); // 实例化对象
MyThread mt2 = new MyThread("线程B "); // 实例化对象
mt1.start(); // 调用线程主体
mt2.start(); // 调用线程主体
// 线程A 运行,i = 0
// 线程B 运行,i = 0
// 线程A 运行,i = 1
// 线程B 运行,i = 1
// 线程A 运行,i = 2
// 线程B 运行,i = 2
// 线程A 运行,i = 3
// 线程B 运行,i = 3
}
}
> 要想实现多线程,必须在主线程中创建新的线程对象。任何线程一般具有5种状态,即创建,就绪,运行,阻塞,终止。下面分别介绍一下这几种状态:
原文:https://www.cnblogs.com/Twittery/p/14746054.html