文章分两份,第一份主要内容为1-4点

  • 1.多线程的概念
  • 2.Java程序运行原理
  • 3.实现多线程的2种方式
  • 4.2种方式的区别
  • 5.线程同步(同步锁)
  • 6.同步线程之间的通讯

1.多线程的概念
(1)并发和并行
并行:多个CPU实例或是多台机器同时执行一段处理逻辑,是真正的同时
并发:通过CUP调度算法,让用户看上去同时去执行,实际上从CPU操作层面并不是真正的同时。并发往往需要公共的资源,对公共资源的处理和线程之间的协调是并发的难点。
(2)什么是进程
进程:一个应用程序就是一个进程。
多进程:在操作系统中,能同时运行多个任务程序(并发)。
(3)什么是线程
线程:是操作系统能够进行运算调度的最小单位。
多线程:一个进程中可以并发多个线程,每条线程并行且独立执行不同的任务(提高程序的效率)。
多线程应用场景:服务器同时处理多个用户端请求,教学电脑控屏软件同时共享屏幕给多个电脑。

2.Java程序运行原理
Java命令会启动Java虚拟机,启动JVM,等于启动了一个应用程序,也就是启动了一个进程,该进程会自动启动一个“主线程”,然后主线程去调用某个类的main方法。
面试题:JVM的启动是多线程吗
JVM启动至少启动了垃圾回收线程和主线程,所以是多线程的。

3.实现多线程的2种方式

  • (1).继承Thread类
  • (2).实现Runnable接口

(1).继承Thread类
1.定义类继承Thread
2.重写run方法
3.把新线程要做的事情写在run方法里
4.创建线程对象
5.开启新线程
以下是四个Demo加强理解

Demo1
Demo2

Demo3


Demo4
(2)实现Runnable接口
1.定义类实现Runnable接口
2.实现run方法
3.把新线程要做的事情写在run方法里
4.创建自定义的Runnable的子类对象
5.创建Thread对象,传入Runnable
6.调用start()开启新线程

以下是两个Demo加强理解
Demo5
Demo6

4.实现多线程的2种方式的区别
继承Thread:
好处:可以直接使用Thread类中的方法,代码简单。
弊端:如果已经有了父类,就不能使用这种方法。

实现Runnable接口
好处:即使自己定义的线程类已经有了父类也没有关系,接口是可以多实现的。
弊端:不能直接使用Thread中的方法,需要先获取到线程对象后,才能得到Thread的方法,代码复杂

5.6点见Java编程基础(二);

Java多线程基础(一)相关推荐

  1. Java多线程干货系列(1):Java多线程基础

    转载自  Java多线程干货系列(1):Java多线程基础 前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们来说极其重要,下面跟我一起开启本次的学 ...

  2. JAVA多线程基础篇-关键字synchronized

    1.概述 syncronized是JAVA多线程开发中一个重要的知识点,涉及到多线程开发,多多少少都使用过.那么syncronized底层是如何实现的?为什么加了它就能实现资源串行访问?本文将基于上述 ...

  3. 爬梯:Java多线程基础

    学习资源:狂神说 Java多线程基础 1.多线程概述 Process 进程 一个进程可以有多个线程. Thread 线程 线程就是独立的执行路径 在程序运行时,即使没有自己创建线程,后台也会有多个线程 ...

  4. java多线程基础学习[狂神说java-多线程笔记]

    java多线程基础学习 一.线程简介 1.类比 2.程序进程线程 3.线程的核心概念 二.线程的实现(重点) 调用方法与调用多线程的区别 Thread 类 1.thread使用方法 2. 代码实现 3 ...

  5. Java多线程干货系列—(一)Java多线程基础

    前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们来说极其重要,下面跟我一起开启本次的学习之旅吧. 正文 线程与进程 1 线程:进程中负责程序执行的 ...

  6. 一篇文章弄懂Java多线程基础和Java内存模型

    文章目录 一.多线程的生命周期及五种基本状态 二.Java多线程的创建及启动 1.继承Thread类,重写该类的run()方法 2.通过实现Runnable接口创建线程类 3.通过Callable和F ...

  7. java多线程基础视频_【No996】2020年最新 Java多线程编程核心基础视频课程

    01.课程介绍.mp4 02.多线程编程基础-进程与线程.mp4 03.多线程编程基础-使用多线程-继承Thread类.mp4 04.多线程编程基础-使用多线程-实现Runnable接口.mp4 05 ...

  8. Java多线程基础知识

    多线程基础知识 这是我再次学习多线程知识的一个总结,对于刚刚接触的学习者是比较友好易懂的,便于快速的理解和掌握. 一.基本概念: 1.进程:进程就是运行中的程序,当一个程序开始执行,操作系统就会给这个 ...

  9. 【Java进阶营】JAVA多线程基础学习二:synchronized

    本篇主要介绍Java多线程中的同步,也就是如何在Java语言中写出线程安全的程序,如何在Java语言中解决非线程安全的相关问题,没错就是使用synchronized. 一.如何解决线程安全问题? 一般 ...

最新文章

  1. 83篇文献、万字总结开启你的强化学习之路!
  2. 无限网络无限连接掉网的解决
  3. antd 嵌套子表格_大型前端项目架构优化探索之路腾讯文档表格
  4. ASP.NET Core依赖注入解读amp;使用Autofac替代实现
  5. 知识图谱论文阅读(九)【转】推荐系统遇到知识图谱之MKR模型
  6. Markdown--Latex公式编辑_验证
  7. SQLite数据库---ListView控件之商品展示案例
  8. [Python3] 010 字符串:给你们看看我的内置方法 第二弹
  9. VS2017编写C++多文件时,出现LNK2005、LNK1169报错的解决方法
  10. C++:怎样把一个int转成4个字节?
  11. 转载:VirtualizingStackPanel
  12. 九万字的JavaWeb学习记录,从入门到入坟,更近一步
  13. win7桌面上计算机图标名称怎么改,win7电脑桌面图标排列方式如何设置 win7电脑桌面图标排列方法...
  14. 境界--------相濡以沫,不如相忘于江湖
  15. 开发中的各种时间格式转换(三)
  16. 插补c语言程序,逐点比较法插补C语言程序
  17. matlab relieff函数,数据挖掘 ReliefF和K-means算法的应用
  18. 基于ip-iq变换的谐波检测算法,并联型APF 有源电力滤波器 谐波电流检测
  19. DRAM DDR4DDR5 UDIMMRDIMM的内存测试固件开发的经验总结
  20. ESP8266(ESP模块)Arduino开发环境快速搭建方法--含网盘离线文件

热门文章

  1. PHP编码规范【json159】
  2. PowerBI账户免费注册
  3. springcloud五大神兽及其原理
  4. lol进入服务器后显示3秒白屏,LOL英雄联盟游戏大厅出现白屏的完美解决方法
  5. H.264软件编码与硬件编码格式对比
  6. mysql 断电_mysql的断电恢复能力
  7. 基于SSM框架的文章管理系统(增加留言回复功能)
  8. int GetMonth( ) const throw( );后面的throw( )什么意思?
  9. Chapter 20 Treatment-Confounder Feedback
  10. Jmeter脚本制作与调优脚本参数化