javaDEMO

本网站记录了最全的各种JavaDEMO ,保证下载,复制就是可用的,包括基础的, 集合的, spring的, Mybatis的等等各种,助力你从菜鸟到大牛,记得收藏哦~~https://www.javastudy.cloud

创建线程

继承Thread类

/** * @Author https://www.javastudy.cloud * @CreateTime 2019/11/01 **/public class ThreadStudy extends Thread{    /**     * 继承Thread类并且重写run方法,     * 这个方法并不常用,因为一个java类只能继承一个类     */    @Override    public void run() {        System.out.println("run in sub Thread , Thread name is "+ Thread.currentThread().getName());    }    public static void main(String[] args) {        System.out.println("run in main Thead , Thread name is "+ Thread.currentThread().getName());        ThreadStudy study = new ThreadStudy();        //注意启动线程要用 start()方法        study.start();        try {            //让主线程休眠两秒,让子线程有足够的时间运行            Thread.sleep(2000);        } catch (InterruptedException e) {            e.printStackTrace();        }    }}

运行结果:

实现Runnable接口

这种让一个类直接实现Runnable接口显得有些笨重实际开发中,经常会用下面匿名类的方式创建线程

/** * @Author https://www.javastudy.cloud * @CreateTime 2019/11/01 **/public class ThreadStudy implements Runnable{    /**     * 实现Runnable接口,     * 这个是常用的方法,因为一个java类可以实现多个接口     */    @Override    public void run() {        System.out.println("run in sub Thread , Thread name is "+ Thread.currentThread().getName());    }    public static void main(String[] args) {        System.out.println("run in main Thead , Thread name is "+ Thread.currentThread().getName());        //要先new 一个Thread        // 然后把实现Runnable接口的类传入到Thread的构造函数中        ThreadStudy study = new ThreadStudy();        Thread thread = new Thread(study);        //注意启动线程要用 start()方法        thread.start();        try {            //让主线程休眠两秒,让子线程有足够的时间运行            Thread.sleep(2000);        } catch (InterruptedException e) {            e.printStackTrace();        }    }}

使用匿名类来创建线程,这里使用了lambda的写法,也是实际开发中常用的写法

/** * @Author https://www.javastudy.cloud * @CreateTime 2019/11/01 **/public class ThreadStudy {    public static void main(String[] args) {System.out.println("run in main Thread , Thread name is "+ Thread.currentThread().getName());// 不用类实现Runnable接口了, 直接这样定义,方便,省事        Runnable runnable = ()-> System.out.println("run in sub Thread, Thread name is "+Thread.currentThread().getName());// 启动这个线程还是要用Thread来包装下,然后调用Thread.start()方法        Thread thread = new Thread(runnable);        thread.start();try {//让主线程休眠两秒,让子线程有足够的时间运行Thread.sleep(2000);        } catch (InterruptedException e) {            e.printStackTrace();        }    }}

使用线程池

/** * @Author https://www.javastudy.cloud * @CreateTime 2019/11/01 **/public class ThreadStudy {    public static void main(String[] args) {System.out.println("Run in main Thread, Thread name is "+ Thread.currentThread().getName());//一句话就可以创建一个线程池下面这种写法线程没有上限,实际开发中不太推荐// 开发中一般是用下行注释的方法,或者自定义线程池参数// 常用的还有 Executors.newFixedThreadPool(10);去创建固定10个线程的池子,这个也有弊端,就是等待的队列没有上界//        ExecutorService service = Executors.newCachedThreadPool();// 没有返回值的处理        service.submit(()-> System.out.println("Run in sub Thread, Thread name is "+Thread.currentThread().getName()));// 有返回值的处理,用一个Future 去接收        Future submit = service.submit(() -> "Run in sub Thread with return , Thread name is " + Thread.currentThread().getName());//输出future里面的值try {System.out.println(submit.get());        } catch (InterruptedException e) {            e.printStackTrace();        } catch (ExecutionException e) {            e.printStackTrace();        }    }}

运行结果:

DEMO总评

我们在很多场景下都会用到另开一个线程去处理任务,如不需要返回值的, 如耗时比较长的等等,那么就要熟练掌握创建线程的方法,希望大家能掌握常用的创建线程方法,让程序撑得起高并发! 少年,加油吧!!

往期热文面试  linux基础知识点总结java集合|遍历HashMap的四种方法mybatis面试点|#和$的区别点在看的都没有bug!!!

java 创建线程_java多线程|创建线程的各种方式相关推荐

  1. java runnable 启动_Java多线程:线程的创建与启动

    # 面试题: Java中创建线程有几种方式. 不同的创建方式有什么区别. 如何启动一个线程. # Java中创建线程的方式 JDK源码中的描述:两种 image.png 第一种是继承Thread类,重 ...

  2. java闭合数据_java多线程中线程封闭详解

    线程封闭的概念 访问共享变量时,通常要使用同步,所以避免使用同步的方法就是减少共享数据的使用,这种技术就是线程封闭. 实现线程封闭的方法 1:ad-hoc线程封闭 这是完全靠实现者控制的线程封闭,他的 ...

  3. java 生产者消费者_Java多线程:线程间通信—生产者消费者模型

    一.背景 && 定义 多线程环境下,只要有并发问题,就要保证数据的安全性,一般指的是通过 synchronized 来进行同步. 另一个问题是, 多个线程之间如何协作呢 ? 我们看一个 ...

  4. java终端线程_java多线程-中断线程

    大纲: java线程的中断原则 中断相关方法 中断实例 一.java线程中断原则 java中断是一种协作机制,每一个线程的中断都由线程自己处理,其他线程只是给要中断的线程一个中断标志. 二.相关方法 ...

  5. 金九银十:线程、多线程,线程池面试题十连问!

    点击上方关注 "终端研发部" 设为"星标",和你一起掌握更多数据库知识 大家好我是小于哥啊,最近的面试中,关于线程.多线程,线程池相关的面试题还是挺多的.今天我 ...

  6. delphiXE关于线程和多线程、线程的同步与异步执行

    delphiXE关于线程和多线程.线程的同步与异步执行 一.最好的参照案例 {$BDS}\source\fmx\FMX.Helpers.Android.pas 如下四个独立方法: type   TMe ...

  7. java中怎样创建线程_java中的线程创建和使用

    Java中实现多线程有两种途径:继承Thread类或者实现Runnable接口.Runnable是接口,建议用接口的方式生成线程,因为接口可以实现多继承,况且Runnable只有一个run方法,很适合 ...

  8. java进程与线程_Java多线程笔记(零):进程、线程与通用概念

    前言 不积跬步,无以至千里:不积小流,无以成江海.在学习Java多线程相关的知识前,我们首先需要去了解一点操作系统的进程.线程以及相关的基础概念. 进程 通常,我们把一个程序的执行称为一个进程.反过来 ...

  9. java多线程优先级的方法_Java多线程以及线程优先级

    文章目录 1 继承Thread类多线程的实现获取和设置线程名称线程优先级 2 实现Runnable接口3 实现Callable接口4 使用线程池 1 继承Thread类 多线程的实现 实现多线程只需要 ...

最新文章

  1. Android 抓包的一些命令 及 adb使用的一些注意事项
  2. 2019年我建议你做好三件事情
  3. windows进程通信 -- WM_COPYDATA消息
  4. 【Qt】数据库实战之QSqlQueryModel
  5. WordPress主题LensNews模板源码,2.2版本多功能新闻积分商城主题
  6. ajax 文件上传,ajax
  7. python购物车代码_python简单商城购物车实例代码
  8. qchart 怎么点击一下 出一条线_疏通身上一条线,很多难缠病,不知不觉消失了!...
  9. 信息系统安全等级保护基本要求_继电保护对电力系统安全运行至关重要,电网对它的基本要求有哪些...
  10. zoj2901【DP·二进制优化】
  11. amazon - FileZilla 连接 amazon云服务器
  12. 奇点云行业观察 | 购物中心如何实现高质量数据采集?
  13. source tree ui操作对应的git命令
  14. 【web渗透思路】敏感信息泄露(网站+用户+服务器)
  15. ios键盘横屏_iOS 强制横屏、部分横屏等功能实践
  16. am335x硬件定时器使用
  17. Java常见运算符整理
  18. ubuntu qt平台搭建openssl开发环境
  19. HarmonyOS实战—可编辑的卡片交互
  20. 使用pyspark 的udf进行tensorflow 模型的预测报错 _pickle.PicklingError: Could not serialize object:

热门文章

  1. 2011东北地区赛G题(二分-网络流判可行性)
  2. jquery验证表单很简单的方法
  3. 在ASP.NET 中实现单用户登录(利用Cache, 将用户信息保存在服务器缓存中)[转]
  4. 二叉树——淘汰赛(洛谷 P4715)
  5. 排序——分数线划定(洛谷 P1068)
  6. axure日期选择器组件_vue干货分享,超过六种组件通信方法讲解和精髓归纳
  7. git 忽略__pycache___图解git,用手绘图带你理解git中分支的原理和应用
  8. 2019年开源数据库报告发布:MySQL仍卫冕!
  9. 案例分析:程序媛记一次特殊的“故障”处理
  10. MySQL SQL优化之覆盖索引