Java多线程基础(一)

文章分两份,第一份主要内容为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加强理解

Demo1Java多线程基础(一)_第1张图片
Demo2
Java多线程基础(一)_第2张图片
Demo3

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

以下是两个Demo加强理解
Demo5Java多线程基础(一)_第5张图片
Demo6
Java多线程基础(一)_第6张图片
4.实现多线程的2种方式的区别
继承Thread:
好处:可以直接使用Thread类中的方法,代码简单。
弊端:如果已经有了父类,就不能使用这种方法。

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

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

你可能感兴趣的:(Java的一些东西)