1. 快速认识线程1.1 线程的介绍对计算机来说每一个任务就是一个进程(Process),在每一个进程内部至少要有一个线程(Thread)是在运行中,有时线程也称为轻量级进程 。
线程是程序执行的一个 路劲,每一个线程都有自己的局部变量表、程序计数器(指向正在执行的指令指针)以及各自的生命周期,当启动了一个java虚拟器(JVM)时,从操作系统开始就会创建一个新的(JVM进程),而JVM进程中将会派生或者创建很多线程 。
1.2 快速创建并启动一个线程? java创建线程大概有四种方式:
1.2.1 继承Thread类实现多线程public class MyThread extends Thread{//重写run方法public void run(){//做一些事}}1.2.2 实现Runnable()接口实现多线程public class MyThread implements Runnable{public void run(){//做一些事}}二者之间的区别:
- 实现Runnable接口可以避免多继承局限
- 实现Runnable()可以更好的体现共享的概念
public class MyThread implements Callable{@Override public String call() throws Exception {//做一些事,有返回值}public static void main(String[] args) throws InterruptedException, ExecutionException {Callable<String> callable=new MyThread();FutureTask<String> futureTask=new FutureTask<>(callable);Thread mThread=new Thread(futureTask);mThread.start();//打印返回值System.out.println(futureTask.get());}}1.2.4 通过线程池启动多线程通过Executor类创建三种类型的普通线程池:newFixedThreadPool(int n);固定大小的线程池
public class MyThread implements Callable{@Override public String call() throws Exception {//做一些事,有返回值}public static void main(String[] args) throws InterruptedException, ExecutionException {//newFixedThreadPool(int n); 固定大小的线程池ExecutorService es = Executors.newFixedThreadPool(2);Callable<String> callable=new MyThread();Future<String> f1 = es.submit(callable);//打印返回值System.out.println(f1.get());//销毁线程池es.shutdown();}}newSingleThreadExecutor();单例线程池
public class MyThread implements Callable{@Override public String call() throws Exception {//做一些事,有返回值}public static void main(String[] args) throws InterruptedException, ExecutionException {//newFixedThreadPool(int n); 固定大小的线程池ExecutorService es = Executors.newSingleThreadExecutor();Callable<String> callable=new MyThread();Future<String> f1 = es.submit(callable);//打印返回值System.out.println(f1.get());//销毁线程池es.shutdown();}}newCashedThreadPool();缓存线程池
public class MyThread implements Callable{@Override public String call() throws Exception {//做一些事,有返回值}public static void main(String[] args) throws InterruptedException, ExecutionException {//newFixedThreadPool(int n); 固定大小的线程池ExecutorService es = Executors.newCachedThreadPool();Callable<String> callable=new MyThread();Future<String> f1 = es.submit(callable);//打印返回值System.out.println(f1.get());//销毁线程池es.shutdown();}}
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
