关于多线程的理解
线程与进程区别:
进程是程序的一次动态执行过程,是资源分配的基本单位,线程是进程中的一个个单元执行流,是cpu调度的最小单位进程之间数据不能或很难共享,线程之间数据很容易共享进程之间互不影响(一辆火车出问题了不会影响其他火车),而线程之间相互影响较大(一节车厢出问题必定会影响该辆火车的其他车厢)
多线程的作用(为什么要用多线程):
提高了执行效率,拿卖电影票来说吧,多个人卖肯定比一个人快提高了资源利用率,一个人受地域等环境影响,可能在最后时期也没卖完给定的票数,致使多余票数浪费,而多个人一起卖,即使也没卖完,但剩余的票数相比一个人来说肯定要少些,从而减少了浪费率
什么是线程安全
前面已经讲了,多线程主要是实现数据共享的,线程安全说到底就是共享的数据安全,也就是数据对应部分要相匹配上就拿生产者和消费者问题来说吧,生产者将生产出的信息放入一个指定的区域,消费者从该区域取出生产者放入的信息,假如某次生产者刚刚把某个信息的名称放入该存储空间,还未放入该信息得内容,a.消费者立即拿出该信息名称与上个信息的内容联系在一起了,b.还有就是生产者已经放了若干条信息数据,消费者才开始取出数据,(或者c.消费者刚刚取完还没等生产者放入新的信息就有取出重复信息)这些都是不安全的
解决:1.加入同步 2.加入等待和唤醒(super.wait,super.notify)