写点什么

线程的创建方法

作者:卢卡多多
  • 2022 年 6 月 13 日
  • 本文字数:846 字

    阅读完需:约 3 分钟

线程的创建方法

对于并发来说,目前就是处于多个线程共同抢占同一个资源来展开的,


线程:  进程中单个可操作的最小逻辑单位,

面试题: 创建线程的方法:

创建线程的方法,


  • 继承 Thread 类

  • 实现 Runnable 接口

  • 实现 callable 接口

  • 线程池

1.创建线程

匿名内部类,加上 lambda 表达式


 new Thread(new Runnable() {
public void run() {
System.out.println("haha");


}


}).start();
复制代码


我们使用实现接口 Runnable 的方式,因为组合中组合优于继承(Prefer composition over inheritance)


降低耦合,java 是单继承


Runnable 中的run()方法并不是你所创建的线程调用的,而是调用你这个线程的线程调用的,也就是主线程


其中 启动线程的是 start(),

测试:

用两种不同的方式,创建出两个线程,交差打印 1~100 之间的奇数和偶数,并断点调试。


            public void run() {                int jishu = 0;                int oushu = 0;                for (int i = 1; i < 100; i++) {                    if (i % 2 == 0){                       oushu++;                    }else jishu++;                }                System.out.println("奇数有"+jishu);                System.out.println("偶数有"+oushu);            }        }).start();
复制代码


常用于线程的使用于,多个请求处理抢占资源,当多个人去抢夺同一件资源之后这个里面的资源的把控和对于外界告诉当前的资源所剩比例,或者说是当前是否可以进去直接抢占就和我们之前提到的锁相关,以及数据可见性有关


这几个创建的方法其实都可以,但是我们常用的还是线程池的使用利用池化的思想,可以减少对于链接的损耗,提高管控的能力,积极的可以对所需要的资源进行整理


当前我们侧重点是支持线程池数据中的基本参数,


  • corePoolSize:核心线程数


  • maximumPoolSize:最大线程数


  • unit:时间单位


  • workQueue:工作队列


  • 线程最大存货时间等



类似于银行机制,柜台取钱的操作,如果可以就进行数据处理,如果不行将可以对数据直接进行放到工作队列里面等

发布于: 刚刚阅读数: 3
用户头像

卢卡多多

关注

努力寻找生活答案的旅途者 2020.04.12 加入

公众号:卢卡多多,欢迎一起交流学习 2021年度优质创作者

评论

发布
暂无评论
线程的创建方法_线程池_卢卡多多_InfoQ写作社区