开启多线程的三种方法
0x01:继承
类,重写
方法,在
方法体中编写要完成的任务
0x02:实现
接口,实现
方法,并把实现
接口的对象作为target传入
的构造方法启动线程
0x03:实现
接口,实现
方法,使用
类来包装
对象,使用
对象作为target传入
的构造方法启动线程,调用
的
方法来获得子线程执行结束后的返回值
第一种方式
static class MyThread extends Thread{
public MyThread() {
super(MyThread.class.getSimpleName());
}
@Override
public void run() {
super.run();
//Todo
System.out.println(currentThread().getName());
}
}
static void crateThread()
{
MyThread thread=new MyThread();
thread.start();
}
console输出: MyThread
第二种方式
Runnable runnable=new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName());
}
};
Thread thread=new Thread(runnable);
thread.setName("0x02");
thread.start();
console输出: 0x02
第三种方式
static class MyCallable implements Callable {
@Override
public Object call() throws Exception {
return 10086;
}
}
public static void threadExamples() {
MyCallable myCallable = new MyCallable();
FutureTask ft = new FutureTask<>(myCallable);
new Thread(ft).start();
try {
System.out.println(ft.get());
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
console输出: 10086