【java笔记】线程(2):多线程的原理_m0_52043808的博客-CSDN博客

【java笔记】线程(3):Thread类的常用方法_m0_52043808的博客-CSDN博客

【java笔记】线程(4):匿名内部类创建线程_m0_52043808的博客-CSDN博客

【java笔记】线程(5):线程安全问题_m0_52043808的博客-CSDN博客

并发:指两个或多个事件在同一个时间段发生(交替执行)

并行:指两个或多个时间在同一时刻发生(同时执行,速度快)

进程:

(1)指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程

(2)程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创建运行到消亡的过程

线程:

进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。

一个进程中可以有多个线程,这样的应用程序叫多线程程序

多线程好处:1、效率高  2、多个线程之间互不影响

例:用安全管家可以同时进行病毒查杀,清理垃圾,电脑加速,说明这个进程是多线程的

线程调度:

分时调度:

所有线程轮流使用CPU的使用权,平均分配每个线程占用CPU时间

抢占式调度:
优先让优先级高的线程使用CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性),java使用的是抢占式调度。

多线程程序并不能提供程序的运行速度,但能提高程序运行效率,让CPU使用率更高

主线程

执行main方法的线程

JVM执行main方法,main方法会进入到栈内存.JVM会找操作系统开辟一条main方法通向cpu的执行路径。CPU可以通过这个路径来执行main方法,这个路径叫做主线程

单线程程序:从main方法开始,从上到下依次执行

创建线程类

java.lang.Thread类为与线程相关的类

第一种方式:创建Thread类的子类

实现步骤:

1、创建一个Thread类的子类

2、在Thread类的子类中重写Thread类中的run方法,设置线程任务(开启线程要做什么)

3、创建Thread类的子类对象

4、调用Thread类中的方法start方法,开启新的线程,执行run方法

void start():java虚拟机调用该线程的run方法

结果是两个线程并发地运行;当前线程(main线程)和另一个线程(创建新线程,执行其run方法)

public class Demo extends Thread {@Overridepublic void run() {for(int i=0;i<10;i++){System.out.println("run"+i);}}
}public class DemoMain {public static void main(String[] args) {Demo d=new Demo();d.start();for(int i=0;i<10;i++){System.out.println("main"+i);}}
}

第二种方式:实现Runnable接口

Runnable接口应该由那些打算通过某一线程执行其实例的类来实现。类必须定义一个run的无参数方法

实现步骤:

1、创建一个Runnable接口的实现类、

2、在实现类中重写Runnable接口的run方法,设置线程任务

3、创建一个Runnable接口的实现类对象

4、创建Thread类对象,构造方法中传递Runnable接口的实现类对象

5、调用Thread类中的start方法,开启新的线程执行run方法

public class Demo implements Runnable{@Overridepublic void run() {for(int i=0;i<10;i++){System.out.println("run"+i);}}
}
public class DemoMain {public static void main(String[] args) {Demo d=new Demo();Thread t=new Thread(d);t.start();for(int i=0;i<10;i++){System.out.println("main"+i);}}
}

实现Runnable接口创建多线程程序的好处:

1、避免了单继承的局限性:一个类只能继承一个类,类继承了Thread类就不能继承其他的类

实现 了Runnable接口,还可以继承其他的类,实现其他的接口

2、增强了程序的拓展性,降低了程序的耦合性(解耦)

把设置线程任务和开启新线程进行了分离(解耦)

实现类中,重写了run方法,用来设置线程任务

创建Thread类对象,调用start方法,用来开启新线程

【JAVA笔记】线程(1):多线程的介绍和实现相关推荐

  1. 关于java线程同步的笔记_线程同步(JAVA笔记-线程基础篇)

    在多线程应用程序中经常会遇到线程同步的问题.比如:两个线程A.线程B可能会 "同时" 执行同一段代码,或修改同一个变量.而很多时候我们是不希望这样的. 这时候,就需要用到线程同步. ...

  2. java 优化线程_Java | 多线程调优(下):如何优化多线程上下文切换?

    通过上一讲的讲解,相信你对上下文切换已经有了一定的了解了.如果是单个线程,在 CPU 调用之后,那么它基本上是不会被调度出去的.如果可运行的线程数远大于 CPU 数量,那么操作系统最终会将某个正在运行 ...

  3. 11.3-全栈Java笔记:线程的生命周期

    一个线程对象在它的生命周期内,需要经历5个状态. 新生状态(New) 用new关键字建立一个线程对象后,该线程对象就处于新生状态.处于新生状态的线程有自己的内存空间,通过调用start方法进入就绪状态 ...

  4. 黑马程序员java笔记之二-----多线程

    java中实现多线程操作有两种手段,一种继承自Thread类,另一种是实现Runnable接口. 一.继承Thread Thread类是在java.lang包中定义的,一个类只要继承了Thread类, ...

  5. 简述java的线程_Java多线程的简述

    线程与进程 进程: ​ 是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程:进程也是程序的一次执行过程,是系统运行程序的基本单位:系统运行一个程序即是一个进 ...

  6. java 查询线程_Java多线程查询

    嗨,我是并发编程领域的新手,我正在测试下面的代码,似乎while循环没有终止线程.有人可以帮助解释这里发生的事情. public class PrimePrinter{ public long cou ...

  7. 韩顺平java笔记 第1讲 内容介绍 项目演示 原理剖析

    1.java介绍 sun公司  gosling 1990  sun启动绿色计划 1992 创建aok语言---->java 1994 gosling 参加硅谷大会 演示java功能 震惊世界 1 ...

  8. java 容器 线程_JAVA多线程并发容器

    1.ArrayList线程不安全:CopyOnWriteArrayList线程安全 package concurrent; import java.util.ArrayList; import jav ...

  9. java web 线程_多线程在javaweb中的应用

    1.web应用中,要对某一个任务用多线程实现,最简单的代码格式是不是必须把要执行的代码放在run方法中? WEB服务器会帮你把每个访问请求开辟一个线程,你只要按照你所开发的框架,比如tomcat会让你 ...

  10. java终端线程_java多线程-中断线程

    大纲: java线程的中断原则 中断相关方法 中断实例 一.java线程中断原则 java中断是一种协作机制,每一个线程的中断都由线程自己处理,其他线程只是给要中断的线程一个中断标志. 二.相关方法 ...

最新文章

  1. linux学习第三天 (Linux就该这么学)
  2. 如何将IDEA文件提交至Gitee仓库
  3. Shell图形化监控网络流量
  4. Python selenium —— 用chrome的Mobile emulation模拟手机浏览器测试手机网页
  5. 使用grep实现精确过滤的五种方法
  6. STL笔记(4)关于erase,remove
  7. Bootstrap使用-1
  8. 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(二)-- Web Api Demo
  9. eslint 规则中文注释
  10. 回溯 Rust 2020:正在成为最受欢迎的编程语言
  11. 【深度学习】使用Keras开发的流程概述
  12. 使用Gitosis搭建Git服务器
  13. 一款优美的windows cmd命令行工具cmder
  14. 非常好用的离线地图APP
  15. UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xff in position 0: illegal multibyte sequence
  16. 有证无车的程序猿如何查询档案编号、添加电子驾驶证(支付宝、微信)
  17. 我想给我的公众号改个名,好不好嘞
  18. 浅析LruCache原理
  19. prim algorithm
  20. 单点登录CAS的超时时间的设置

热门文章

  1. 要走路~先要有一雙最舒適的鞋
  2. jar 包的认识与处理、jar 文件 war 文件以及 ear 文件
  3. 物质之学 —— 等离子(物质的第四态)
  4. DoG(Difference of Gaussian)
  5. Linux sudo一些命令出现 command not found 的原因
  6. ubuntu 下 opencv 3. 的安装和运行
  7. java x1价格_java I/O总结
  8. overflow c语言_C语言表结构(一)
  9. mysql数据库中如何创建角色_MySQL数据库如何创建用户呢?
  10. python常用代码入门-入门十大Python机器学习算法(附代码)