Java中 实现多线程成的三种方式(继承,实现,匿名内部类)
/** 第一种方式:继承Thread类
* 1. 定义一个类,然后让该类继承Thread类
* 2. 重写run方法
* 3. 创建定义的这个类的对象
* 4. 启动线程
*/
//继承Thread类
public class MyThread extends Thread{
public MyThread() {}
public MyThread(String name) {
super(name);
}
//run方法中封装的应该是要被线程执行的代码 ,run方法中代码的原则,一般存方的都是比较耗时的代码
public void run (){
for (int i = 0; i < 200; i++) {
System.out.println(Thread.currentThread().getName() + "---" + i);
}
}
}
//测试方法
private static void Test() {
// 创建对象
MyThread mt1 = new MyThread();
MyThread mt2 = new MyThread();
//启动线程
// public void start()使该线程开始执行;Java 虚拟机调用该线程的 run 方法。
mt1.start();
//mt1.start();// 线程的启动只能是一次
mt2.start();
}
------------------------------------------------------------------------------------------------------------
/** 第二种方式:实现Runnable接口
* (1): 创建一个类,让该类实现Runnable接口
* (2): 重写run方法
* (3): 创建该类的对象
* (4): 创建Thread类的对象,然后把3中的对象作为参数传递给Thread
* (5): 启动线程
*/
//实现Runnable接口
public class MyThread2 implements Runnable {
public MyThread2() {
super();
}
public void run() {
for(int x = 0 ; x < 200 ; x++){
System.out.println(Thread.currentThread().getName() + "---" + x);
}
}
}
//测试方法
private static void Test2() {
// 创建MyThread的对象
MyThread2 mt = new MyThread2();
// 创建Thread类的对象,然后把3中的对象作为参数传递给Thread
// public Thread(Runnable target)
Thread t1 = new Thread(mt,"张飞");
Thread t2 = new Thread(mt,"关羽");
Thread t3 = new Thread(mt,"刘备");
// 启动线程
t1.start() ;
t2.start() ;
t3.start() ;
}
------------------------------------------------------------------------------------------------------------
/** 第三种方式:使用匿名内部类的方式实现
* new 类名/接口名() {
* 方法重写 ;
* } ;
*/
//测试方法
//匿名内部类
private static void Test3() {
new Thread() {
public void run() {
System.out.println("线程执行了。。。。。。。");
}
}.start();
}