一、线程和进程的区别
1、进程 是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。
2、线程 是程序中的执行线程。Java虚拟机允许应用程序同时运行多个执行的线程。
线程总是属于某个进程,进程中的多个线程共享进程的内存
二、创建线程有三种方式
1、继承Thread类,重写run()方法
2、实现Runnable接口
3、实现Callable接口,使用Future接收返回结果
三、代码示例
package thread;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
/**
* @Description Java线程基础-创建线程的三种方式
* @Author King
* @Date 2019/11/5 17:45
* @Version 1.0
**/
public class ThreadTest {
// 线程创建的三种形式
// 1、继承Thread类,重写run()方法
public static class Thread1 extends Thread {
Thread1(String name) {
super(name);
}
@Override
public void run() {
System.out.println(this.getName() + "开始启动。。。");
}
}
// 2、实现Runnable接口
public static class Thread2 implements Runnable {
private String name;
Thread2(String name) {
this.name = name;
}
@Override
public void run() {
System.out.println(name + "开始启动。。。");
}
}
// 3、实现Callable接口,使用Future接收返回结果
public static class Thread3 implements Callable<String> {
private String name;
Thread3(String name) {
this.name = name;
}
@Override
public String call() {
return this.name + "开始启动。。。";
}
}
public static void main(String[] args) throws ExecutionException, InterruptedException {
Thread1 thread1 = new Thread1("线程1");
// 启动线程1
thread1.start();
Thread thread2 = new Thread(new Thread2("线程2"));
// 启动线程2
thread2.start();
// 创建一个固定数量的线程池
ExecutorService pool = Executors.newFixedThreadPool(4);
// 线程3由线程池调度启动
Future<String> future = pool.submit(new Thread3("线程3"));
System.out.println(future.get());
// 中断线程
thread1.interrupt();
thread2.interrupt();
pool.shutdown();
}
}