java中创建线程的三种方式
一、继承thread类来创建线程类
(1)定义一个继承自Thread类的子类,并重载该类的run方法。线程开始是运行run方法中的代码。
(2)实例化上一部创建的子类。
(3)调用实例化的对象的start方法(这里谁让在子类中没有实现start方法,直接调用的是父类中的start,通过多态实现调用子类run方法)
package com.myThread
public class myThread extrends Thread{
public void run(){
System.out.println(“我是一个线程!!");
}
public static void main(String[] args){
Thread mythread = new myThread();
mythread.start();
}
}
二、通过实现Runnable接口来创建线程类
(1)定义一个实现Runnable接口的类,实现其 中定义的run方法。
(2)实例化该类对象(可用runnable接口接,也可以使用所定义的类来接)。
(3)创建thread类将runnable或实现类传入。
(4)条用thread的start方法。
package main
import java.lang.Thread
public class myThread implements Runnable{
public void run(){
System.out.println("this is thread created by using runnable!!!");
}
public static void main(String[] args){
Runnable run = new myThread();
Thread thread = new Thread(run, "runnable--thread");
thread.start();
}
}
三、实现Callable接口
废话少说,上代码。
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
public class myThread implements Callable<Integer>{
@Override
public Integer call() throws Exception {
System.out.println("thread created by using Callable!!");
return 0;
}
public static void main(String[] args) {
Callable<Integer> call = new myThread();
FutureTask<Integer> fu = new FutureTask<>(call);
new Thread(fu, "CallableThread").start();
}
}