JavaSE复习4

时间:2019-06-28 21:06:45   收藏:0   阅读:92

1.多线程

线程和进程各自有什么区别和优劣呢?

Thread实现多线程

技术分享图片

技术分享图片

只要启用多线程就必须使用thread中的start函数。

技术分享图片

runnable实现多线程(避免单继承的局限)

runable是接口,可以实现多继承,但是没有start方法,所以无法直接开始线程,但是thread的构造方法中可以把runnable作为参数,所以可以通过构造方法来进行传递。

技术分享图片

其中Mythread实现了runnable接口。以后多线程的实现优先考虑runnable。

thread和runnable之间的关系

查看源码 :

技术分享图片

发现thread类实现了runnable接口,在之前继承thread类的时候,实际上覆写的还是runnable中的run方法。而执行start之后实际上是调用run方法,一张图表示runnable和thread之间的关系:

技术分享图片

在进行thread启动多线程的时候调用的是start方法,而后找到的是run方法。

技术分享图片

当通过thread类的构造方法传递了一个runnable的接口对象的时候,那么该接口对象将被thread类中的target属性所保存。在thread中调用start方法时会调用下面的run方法:

技术分享图片

而这个覆写的run方法会调用runnable接口子类(上面图中的new Mythread对象,这个对象实现了runnable接口)被覆写过的run方法。

当有多个线程时的结构:

技术分享图片

在实际情况下这里的线程对象就可能是各个用户。

模拟多个用户买票的程序:

技术分享图片

内存如下图所示:

技术分享图片

 

原文:https://www.cnblogs.com/ljq2622/p/11104593.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!