![](https://img.haomeiwen.com/i3840925/243c3747c189896f.png)
创建线程的方式
1:实现Runnable
2:继承Thread
3:匿名内部类
4:callable,带返回值
设置project的 jdk
javac -version
javac 15.0.1
java -version
openjdk version "15.0.1" 2020-10-20
echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/openjdk.jdk/Contents/Home
image.png
![](https://img.haomeiwen.com/i3840925/73ade99e62b1053f.png)
demo
package thread_test;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
class A implements Runnable {
@Override
public void run() {
System.out.println("in A run " + Thread.currentThread().getName());
}
}
class B extends Thread{
public void run() {
System.out.println("in B run " + Thread.currentThread().getName());
}
}
class D implements Callable<String> {
@Override
public String call() throws Exception {
System.out.println("in Callable run " + Thread.currentThread().getName());
return "call Callable result";
}
}
public class t_runnable {
public static void main(String[] args) throws InterruptedException, ExecutionException {
A a = new A();
Thread t1 = new Thread(a);
t1.start();
Thread t2 = new B();
t2.start();
System.out.println("in Main run " + Thread.currentThread().getName());
new Thread(){
@Override
public void run() {
System.out.println("in Main run " + Thread.currentThread().getName());
}
}.start();
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("in Main run " + Thread.currentThread().getName());
}
}).start();
new Thread(()->{
System.out.println("in Main run " + Thread.currentThread().getName());
}).start();
FutureTask<String> ft = new FutureTask<>(new D());
Thread t3 = new Thread(ft);
t3.start();
t1.join();
t2.join();
t3.join();
String result = ft.get();
System.out.println("result:" + result);
}
}
output
in B run Thread-1
in A run Thread-0
in Main run main
in Main run Thread-2
in Main run Thread-3
in Main run Thread-4
in Callable run Thread-5
result:call Callable result
main函数运行后会启动一个主线程main thread , 其它线程是用户自定义线程,可以并发运行,cpu的抢占式调度导致
线程的6种状态切换
![](https://img.haomeiwen.com/i3840925/5bc982f48634570c.png)
ref
https://www.bilibili.com/video/BV1Hb4y1J7CB/?spm_id_from=pageDriver&vd_source=82e03147a3c338ea1383309670651595
https://blog.csdn.net/weixin_45246161/article/details/125066776
网友评论