多线程之继承Thread类及多线程内存分析
*创建多线程的一种方式:继承Thread类
* java.lang.Thread是描述多线程的类,要实现多线程程序,一种方式就是继承Thread类
* 1.创建一个类Mythread让其extends Thread类
* 2.在Mythread类中重写Thread类中的run方法,设置线程任务(让它干什么事情)

* 3.创建Mythread类的对象
* 4.调用Thread类中的start方法,开启新的线程执行run方法
* void start()使该线程开始执行,java虚拟机调用该线程的run方法
* 然后两个线程开始并发的执行;当前线程(main主线程)和另一个线程(创建的新线程,执行其run方法)
* 多次启动一个线程是非法的,特别是当线程已经结束执行后,不能再重新启动
* java程序的执行是属于抢占式调度(跟主流操作系统调度方式一致),谁的优先级高谁先执行,优先级相同则随机选择执行

程序并发执行后的打印结果(部分结果,可以看出是并发执行的)

以下是基于上边介绍对多线程进行内存分析:
从分析图可以看出CPU有了选择的空间:可以选择执行main方法,也可以选择执行两个run方法
所以这也是多线程的一个优点:多个线程之间互不影响【因为各个线程在不同的栈空间】

多线程之继承Thread类及多线程内存分析的更多相关文章
- “全栈2019”Java多线程第二章:创建多线程之继承Thread类
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- 继承Thread类使用多线程
java实现多线程有两种方式,一种是继承Thread类,另外一种就是实现Runnable接口. 两种实现方法的优缺点: 使用Thread类实现多线程局限性就是不支持多继承,因为java是不支持类多继承 ...
- 通过继承Thread类实现多线程
(1)继承Thread类(2)重写run(方法(3)通过start0方法启动线程 一定的缺点: Java中的类是单继承的,一旦继承了Thread类,就不允许再去继承其它的类 线程和主方法之间的执行顺序 ...
- 多线程02.继承Thread类
package chapter2; /** * 1.使用static虽然完成了当前的功能. * 但是static的生命周期比较长,需要在所有线程执行完成后才会结束. * 还有号没有按照顺序进行打印 * ...
- Java通过继承thread类与实现Runnable接口实现多线程的区别
Java中线程的创建有两种方式: 1. 通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2. 通过实现Runnable接口,实例化Thread类 一.通过继承T ...
- Java 多线程实现方式一:继承Thread类
java 通过继承Thread类实现多线程很多简单: 只需要重写run方法即可. 比如我们分三个线程去京东下载三张图片: 1.先写个下载类: 注意导入CommonsIO 包 public class ...
- 创建线程的一般方式和匿名内部类方式对比——继承thread类,重写run()方法
第一种:继承thread类,重写run()方法 一般方式:Demo01.java /** * 创建线程的第一种方式:继承thread类,重写run()方法 * * @author :liuqi * @ ...
- Java之同步代码块处理继承Thread类的线程安全问题
package com.atguigu.java; /** *//** * 使用同步代码块解决继承Thread类的方式的线程安全问题 * * 例子:创建三个窗口卖票,总票数为100张.使用继承Thre ...
- 线程创建的三种方法:继承Thread类,实现Runnable接口,实现Callable接口
线程创建 三种创建方式 1. 继承Thread类 自定义线程类继承Thread类 重写run()方法,编写线程执行体 创建线程对象,调用start()方法启动线程 线程不一定执行,CPU按排调度 pa ...
随机推荐
- IntelliJ IDEA 常用快捷键整理
1. -----------自动代码-------- 常用的有fori/sout/psvm+Tab即可生成循环.System.out.main方法等boilerplate样板代码 例如要输入for( ...
- 套接字I/O函数write/read writev/readv send/recv sendto/recvfrom sendmsg/recvmsg
函数原型 read/write系原型 #include <unistd.h> ssize_t read(int fd, void *buf, size_t count); #include ...
- Android 编程下Touch 事件的分发和消费机制和OnTouchListener,OnClickListener和OnLongClickListener的关系
1.事件分发:public boolean dispatchTouchEvent(MotionEvent ev) Touch 事件发生时 Activity 的 dispatchTouchEvent(M ...
- gromacs2018使用踩坑记--grompp 为啥要用-r
1. GMX grompp 概要 gmx grompp [ -f [<.mdp>] ] [ -c [<.gro / .g96 / ...>] ] [ -r [<.gro ...
- MobileNetV2: Inverted Residuals and Linear Bottlenecks
1. 摘要 作者提出了一个新的网络架构 MobileNetV2,该架构基于反转残差结构,其中的跳跃连接位于较瘦的瓶颈层之间.中间的扩展层则利用轻量级的深度卷积来提取特征引入非线性,而且,为了维持网络的 ...
- leecode 238除自身以外数组的乘积
class Solution { public: vector<int> productExceptSelf(vector<int>& nums) { //用除法必须要 ...
- 浏览器端-W3School-JavaScript-HTML DOM:HTML DOM Event 对象
ylbtech-浏览器端-W3School-JavaScript-HTML DOM:HTML DOM Event 对象 1.返回顶部 1. HTML DOM Event 对象 实例 哪个鼠标按钮被点击 ...
- CompletableFuture用法介绍
一.CompletableFuture用法入门介绍 入门介绍的一个例子: package com.cy.java8; import java.util.Random; import java.util ...
- SAS数据挖掘实战篇【七】
SAS数据挖掘实战篇[七] 6.5 SAS EM数据挖掘-----预测模型 1 问题定义 目标:建立模型预测贷款申请的信用状态,选择最优的模型来预测和减少损失. 数据集:SAMPSIO.DMAGE ...
- delphi ASCII码表及键盘码表
ASCII码表 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 0 NUT 32 (space) 64 @ 96 . 1 SOH 33 ! 65 A 9 ...