当前位置:首页 > Java技术 > 一、关于JAVA中多线程的介绍

一、关于JAVA中多线程的介绍

2022年08月05日 10:33:26Java技术4

多线程

  • 进程
    是一个正在执行中的程序
    每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元
  • 线程
    就是进程中一个独立的控制单元。一个进程中至少有一个线程
  • 多线程存在的意义
  • 线程的创建方式
  • 多线程的特性

JAVA VM启动的时候会有一个进程java.exe
该线程中至少一个线程负责Java程序的执行,而且这个线程运行的代码在Main方法中
该线程称为主线程
垃圾回收也是一个线程

扩展:

更细节说明Jvm,jvm启动不只是一个线程,还有负责垃圾回收机制的线程

如何在自定义代码中自定义一个线程

通过API的查找,java已经提供了对各类食物的描述,就是Thread类

创建线程的第一种方式,继承Thread类

步骤:

1.定义类继承Trhead

2.复写Thread类中的run方法

目的:将自定义的代码存储在run代码中,让线程运行

3.调用线程的start方法

开启线程并执行线程的run方法

发现运行结果每一次都不同,因为多个线程都获取CPU的执行权,CPU执行到谁,谁就运行
明确一点,在某一时刻,只能有一个程序在运行,(多核除外)
CPU在做着快速的切换,以达到看上去同时进行的效果
我们可以形象地把多线程的运程行为在互相抢夺cpu的执行权
这就是多线程的随机性,谁抢到谁执行,至于执行多长时间,cpu说的算

public void run()如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。 Thread 的子类应该重写该方法。

public void start()使该线程开始执行;Java 虚拟机调用该线程的 run 方法。

结果是两个线程并发地运行;当前线程(从调用返回给 start 方法)和另一个线程(执行其 run 方法)。

多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动。

该方法有两个作用:启动线程 调用run方法

class Demo extends Thread{
	@Override
	public void run() {
		// TODO Auto-generated method stub
		super.run();
		for(int i=0;i<=400;i++)
			System.out.println("demo run");
	}
}
public class ThreadDemo extends Thread{
	public static void main(String[] args) {
		Demo th=new Demo();
		th.start();
		for(int i=0;i<=400;i++)
			System.out.println("hello main");
	}
}

为什么要覆盖run方法?

Thread用于描述线程
该类就定义了一个功能,用于存储线程要运行的代码,该存储功能就是run方法
也就是Thread类中的run方法,用于存储线程要运行的代码

作者:也许是我送你哦~
来源链接:https://blog.csdn.net/hebing1022/article/details/89223508

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/17626.html

分享给朋友:

“一、关于JAVA中多线程的介绍” 的相关文章

Java空指针异常解决java.lang.NullPointerException解决心得

Java空指针异常解决java.lang.NullPointerException解决心得

今天做课设的时候运行程序报出以下错误 java.lang.NullPointerException 首先要理解的是此错误并不会在 程序中报错,只会在运行的时候报错。 是由于某个参数(集合,数组等数据)可能出现一个null值而导致后面的程序不能运行时...

两年前写的Java基础总结书

两年前写的Java基础总结书

想法衍生 两年前的我,突发奇想,把自己学的Java基础进行规范化的整理,因为自己的文档编辑能力有限,所以写的排版不是很好,参照图书排版的形式,将书籍进行整理,可以供学习Java基础的朋友参考,由于时间有限,可能也会有问题,请指出。下载地址在最后 截图如下:...

深入理解 Java 并发锁

深入理解 Java 并发锁

📦 本文以及示例源码已归档在 javacore 一、并发锁简介 确保线程安全最常见的做法是利用锁机制(Lock、sychronized)来对共享数据做互斥同步,这样在同一个时刻,只有一个线程可以执行某个方法或者某个代码块,那么操作必然是原子性的,线程安全的...

Java虚拟机1:什么是Java

Java虚拟机1:什么是Java

前言 让我们来看一下Java的广告词,来自http://www.java.com/zh_CN/about/: 97%的企业桌面运行Java 美国有89%的桌面(或计算机)运行Java 全球有900万Java开发人员 开发人员的头号选择...

Java 日志框架详解

Java 日志框架详解

1. JUL学习 JUL全称Java util Logging是java原生的日志框架,使用时不需要另外引用第三方类库,相对其他日志框 架使用方便,学习简单,能够在小型应用中灵活使用。 1.1 架构介绍 Loggers...

Java日志框架那些事儿

Java日志框架那些事儿

在项目开发过程中,我们可以通过 debug 查找问题。而在线上环境我们查找问题只能通过打印日志的方式查找问题。因此对于一个项目而言,日志记录是一个非常重要的问题。因此,如何选择一个合适的日志记录框架也非常重要。在Java开发中,常用的日志记录框架有JDKLog、Log4J、LogBack、SLF4J...

Java实现素数的判断

素数的定义只能被1和它本身整除,不包括1 例 2.3.5.7.11.13 实现代码 Scanner in=new Scanner(System.in); int n ; n=in.nextInt(); for(int n1=2;n1&l...

Java实现阶乘运算

n!=123*…n 学习编程就是要了解从问题到程序是如何实现的 Scanner in=new Scanner(System.in); int n ; n=in.nextInt(); // int i=1; int factor=1;...

java之整数的分解可以理解为倒序输出

Scanner in=new Scanner(System.in); int number ; number=in.nextInt(); int result=0; do{ int diget=number%10;...

java计数循环及小技巧

要运行一个很大次数的循环应该选择一个小数,然后去判断 例如本例子是100可以选择10去判断 public static void main(String[] args) { // TODO Auto-generated metho...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。