1.继承Thread类
2.实现Runnable接口
还有吗?
3.Callable接口
4.使用线程池
你知道源妈是怎样描述的吗?
打开Thread类源码看看
原文总结意思大概是:
创建一个新的执行线程有两种方法。一个是将一个类声明为Thread
的子类。这个子类应该重写run
类的方法Thread
。另一种方法来创建一个线程是声明实现类Runnable
接口。那个类然后实现了run
方法。然后可以分配类的实例,在创建Thread
时作为参数传递,并启动。
Runnable 是接口。
Thread 是类,且实现了Runnable接口。
Callable、ExecutorService、Future都是属于Executor框架,在JUC包下
执行提交的{@link Runnable}任务的对象
在Linux下Java调用系统线程过程:
1.Java的Thread是通过JNI机制最终调用到了系统底层的pthread_create方法创建线程的
2.Thread的JNI调用链:Thread.java->jvm.cpp->thread.cpp->oslinux.cpp->pthreadcreate
3.实现一个JNI需要4种文件,.java文件,.h头文件(相当于接口),.c或.cpp文件(相当于实现),生成的动态链接库
从使用的角度说,创建线程有多种
从底层实现角度说,只有两种