17 为什么会有线程?

00 为什么要有多线程?

单线程,就是指单个流水线的进程(A→B→C),这样的效率不太高。

多线程,指多个单线程同时进行,效率高。


生活场景:

  1. 购买电脑时,销售人员介绍这台电脑是cpu几核。通常来说,核越多,运行的就越快。单核CPU运行就是单线程,双核CPU就是多线程。

  2. 类似于生活中的行车道,有的车道小,只有一条道,所以容易造成拥挤。如果车道变宽,可以跑多个车道,那么效率就会高很多了。一条道为单线程,多条道为多线程,可以提高效率。


01 多线程的使用

  1. 继承Thread类,new Thread(){}.start(),重写run()方法,使用start()方法

  2. 实现Runnable接口,new Thread(new Runnable() {})。start()

两者的区别:

  • 继承可以直接使用Thread类中的方法,代码简单。弊端:不能实现多继承

  • 实现接口可以在子类继承父类的情况下使用。

02 并行与并发的区别

  • 并行:多个程序共同进行,类似多个水管同时放水。

  • 并发:多个程序依次发送,类似QQ聊天,先给A发消息,让A等着,再给B发消息,依此类推。

03 同步与异步的区别

  1. 同步:进行同一个步骤

    A输入:”我”,”爱”,”编”,”程”

    B输入:”我”,”不”,”爱”,”编”,”程”

    如果A输入和B输入不是同步的,输出时可能会出现”我爱 我不爱编程 编程”。

    如果A输入和B输入是同步的,输出则是”我爱编程 我不爱编程”

    如果某一部分代码块(e.g. A输入/B输入)需要同步进行,则一定要设为同步synchronized/ (wait,notify).

  2. 异步:当调用一个需要花费很长时间来执行的方法,并不希望让程序等待方法返回时,就应该使用异步编程,在很多情况下,采用异步途径往往更有效率。

04 线程池

线程池就是类似于养鱼的池子,每一条鱼都是一个线程,当钓起一条鱼后,钓鱼这个动作就算完成了,而这条鱼当场不会死亡,又可以将这条鱼再放回线程池继续钓。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值