栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 多线程 0623--0624

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 多线程 0623--0624

1.进程 : 进程是一个 应用程序。 (.exe程序)

   线程: 线程是一个进程中的执行场景/执行单元。

    一个进程可以启动多个线程。

2. 运行java程序时,会先启动JVM,而JVM就是一个进程。JVM会启动一个主线程调用main方法,再启动一个垃圾回收线程负责看护,回收垃圾。所以一个java程序至少会有两个线程并发。

一个是垃圾回收线程,一个是执行main方法的主线程。

3.进程和线程是什么关系?

   阿里巴巴 --- 进程

              马云----线程

            童文红---线程

京东 ---- 进程

               强东 ----线程

                妹妹----线程

进程A和进程B 的内存独立不共享(阿里巴巴和京东的资源不共享)

线程A和线程B(同一进程)堆内存和方法区内存共享,但是栈内存独立,一个线程一个栈。

JVM内存分布如下图(一个进程==一个JVM)

假设启动10个线程,会有10个栈空间,每个栈之间,互不干扰,各自执行各自的,这就是多线程并发。可以提高效率。

 4.思考:

使用了多线程机制之后,main()方法结束后,程序未必结束,因为main()方法结束了只能说主线程结束了,主栈空了。其它的栈可能还在压栈弹栈。

5. 

6. 对于单核的CPU来说,真的可以做到真正的多线程并发嘛?(对于多核来说,可以做到)

     什么是真正的多线程并发?t1线程执行t1的,t2线程执行t2的,互不影响。

单核CPU表示只有一个大脑 : 不能做到真正的多线程并发,但是可以做到一种“多线程并发”的感觉

对于单核CPU来说,在某个时间点上实际上只能处理一件事情,但是由于CPU的处理速度很快,多个线程之间频繁切换执行,给人的感觉是:多个事情同时在做。

7.  下面的程序除了垃圾回收外,只有一个线程。 

 

    压栈,弹栈的过程了然于目。

8. 实现线程的方式 

1)编写一个类,直接继承 java.lang.Thread ,重写run()方法。

(1)如何创建分支线程对象?new就行了

(2)如何启动分支线程?调用start方法

(3)start()方法的作用:

启动一个分支线程,在JVM中开辟一个新的栈空间,这段代码任务完成之后,瞬间就结束了。

这段代码的任务只是为了开启一个新的栈空间,只要新的栈空间开出来,start()方法就结束了。分支线程就启动成功了。

启动成功的线程会自动调用run()方法,并且run()方法在分支栈的栈底。

run方法在分支栈的底部,main方法在主栈底部。二者平级。

(4)思考:不调用start方法,直接调用run方法。

              此操作不会产生分支线程(即单线程)

(5)直接调run()

(6) 调用start()

2)编写一个类,实现java.lang.Runnable 接口

 3) 采用 匿名内部类

相当于      new 匿名 implements Runnable

 9. 线程的生命周期

新建状态  就绪状态  运行状态  阻塞状态  死亡状态

 堵塞时间:比如说 sleep() , scanner 输入

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/992649.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号