JavaSE_day43(多线程单线程区别,图解main方法若是单多线程该如何执行,如何使用多线程2种方式)

这篇具有很好参考价值的文章主要介绍了JavaSE_day43(多线程单线程区别,图解main方法若是单多线程该如何执行,如何使用多线程2种方式)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 A.java

 * 学习多线程之前,我们先要了解几个关于多线程有关的概念。
    
    A:进程:进程指正在运行的程序。确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能。
    
    B:线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。
    
    C:简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程
    
    什么是多线程呢?即就是一个程序中有多个线程在同时执行。(同一时间做多件事情,安全性低,效率高)

* 多线程的实现方式:
 *         方式1:

 *             一种方法是将类声明为 Thread 的子类。
 *             该子类应重写 Thread 类的 run 方法。
 *             接下来可以分配/创建并启动该子类的实例
 * 
 * Thread
 *         String getName()      返回该线程的名称。 
 * 
 *         void   setName(String name) 改变线程名称,使之与参数 name 相同。
 * 
 * 现在使用了多线程,所以输出是切换性的,不会按顺序执行,先是张三执行完,再次依次往后执行...
 * 
 * CPU执行程序的随机性,多个程序进行高速切换,所以并不不会感觉有卡顿现象!
    
    
    右键选择,Source,选择Override选择需要重写的方法

定义多线程类:

public class A_MyThread extends Thread {

	@Override
	public void run() {
		for (int i = 0; i < 100; i++) {
			System.out.println(getName() + ":" + i);
		}
	}
}

定义主类:

public class A_ThreadMain {
	public static void main(String[] args) {
		
		//创建线程实例
		A_MyThread mt = new A_MyThread();
		//修改线程名字
		mt.setName("张三");  //不改名字就是默认是从Thread-0,Thread-1...开始
		
		//启动线程
		mt.start();
		
		//创建线程实例
		A_MyThread mt2 = new A_MyThread();
		mt2.setName("老王");
		
		//启动线程
		mt2.start();
	}
}

2 B.java

 * 主方法中的代码(方法)执行是多线程吗?
 *         图解:

JavaSE_day43(多线程单线程区别,图解main方法若是单多线程该如何执行,如何使用多线程2种方式)

JavaSE_day43(多线程单线程区别,图解main方法若是单多线程该如何执行,如何使用多线程2种方式)

 

 


 *         主方法的(方法)执行是单线程!

3 C.java

 * 多线程的实现方式:
 *         方式2:

 *     创建线程的另一种方法是声明实现 Runnable 接口的类。该类然后实现 run 方法。然后创建Runnable的子类对象,传入到某个线程的构造方法中,开启线程。
    
    为何要实现Runnable接口,Runable是啥玩意呢?继续API搜索。
    
    查看Runnable接口说明文档:Runnable接口用来指定每个线程要执行的任务。包含了一个 run 的无参数抽象方法,需要由接口实现类重写该方法。

 *     1、定义类实现Runnable接口。
    2、覆盖接口中的run方法。。
    3、创建Thread类的对象
    4、将Runnable接口的子类对象作为参数传递给Thread类的构造函数。
    5、调用Thread类的start方法开启线程。

    由于java是单继承,所以再搞一个接口出来实现多线程是非常有意义的!

定义多线程类

public class B_MyThread implements Runnable {
	int num;
	
	public B_MyThread() {
	}
	
	@Override
	public void run() {
		for (int i = 0; i < 100; i++) {
			Thread t = Thread.currentThread();//currentThread()   返回对当前正在执行的线程对象的引用。
			System.out.println(t.getName() + ":" + i);
			
		/*	//链式编程
			System.out.println(Thread.currentThread().getName() + ":" + i + num);*/
		}
	}

}

主类:文章来源地址https://www.toymoban.com/news/detail-475009.html

public class B_ThreadMain {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		//创建线程实例
		B_MyThread mt = new B_MyThread();
		Thread t = new Thread(mt);
		
		t.setName("xu");
		t.start();
		
		//创建线程实例
		B_MyThread mt2 = new B_MyThread();
		Thread t2 = new Thread(mt2);
		
		t2.setName("ui");
		t2.start();
		
		
	}

}

到了这里,关于JavaSE_day43(多线程单线程区别,图解main方法若是单多线程该如何执行,如何使用多线程2种方式)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【DAY43-1】vue知识整理

    Vue 是一个流行的JavaScript框架,它具有简单易学、灵活高效的特点,在前端开发中受到广泛欢迎。Vue生态包括了众多的插件和工具,以下是几个常见的Vue生态: Vuex :Vuex是为Vue.js应用程序开发的状态管理模式。它可以帮助你管理应用程序的所有组件的状态,并使用一些规则来

    2023年04月22日
    浏览(38)
  • 每天一点Python——day43

       

    2024年02月11日
    浏览(64)
  • 线程方法接收参数示例,Java的两种线程实现方式区别

    总所周知,Java实现多线程有两种方式,分别是继承Thread类和实现Runable接口,那么它们的区别是什么? 继承 Thread 类: 通过继承 Thread 类,你可以创建一个直接表示线程的类。你可以覆盖 Thread 类中的 run 方法来定义线程的逻辑。当调用 start 方法启动线程时,会执行该类中的

    2024年02月11日
    浏览(43)
  • day43-Spring_IOC

    1.2.3 1. Spring_IOC 1.1  定义:轻量级框架,java EE的春天,主流框架 1.2  Spring 特性:IOC控制反转;AOP面相切面 1.3  组成部分:Spring在SSM中所起到的作用(SpringMVC和Mybatis框架的黏合剂) 1.4  Spring 理念:核心思想是面向Bean(万物皆Bean组件) 1.5  Spring 优势:IOC 控制反转(降低了

    2024年02月15日
    浏览(42)
  • LeetCode 每日一题 Day 37-43

    终于考完试了,寒假期间将会每天持续更新! 给定平面上 n 对 互不相同 的点 points ,其中 points[i] = [xi, yi] 。回旋镖 是由点 (i, j, k) 表示的元组 ,其中 i 和 j 之间的欧式距离和 i 和 k 之间的欧式距离相等(需要考虑元组的顺序)。 返回平面上所有回旋镖的数量。 示例 1: 输

    2024年01月17日
    浏览(36)
  • 【代码随想录】刷题笔记Day43

    刚过完非常愉快的元旦假期,唔想反工啊啊啊,先刷刷题找回学习的状态吧 dp[target] == target为目标,weight和value相同的01背包问题,用一维遍历 dp[j]为容量为j的背包所能装的最大价值 dp[j] = max(dp[j], dp[j - num[i]] + nums[i]) 关键在于把两两相减问题转化为两堆近似相减,和上一题就

    2024年02月03日
    浏览(40)
  • 启动线程方法 start ()和 run ()有什么区别

    在Java中,线程可以通过调用 start() 方法或者直接调用 run() 方法来执行。这两种方式有着重要的区别: start() 方法: 当你调用线程的 start() 方法时,它会使线程进入就绪状态,等待系统调度。系统会为该线程分配资源,并在合适的时机执行线程的 run() 方法。 实际上, start(

    2024年02月11日
    浏览(47)
  • day43-Feedback Ui Design(反馈ui设计)

    效果 index.html style.css script.js

    2024年02月15日
    浏览(40)
  • 【JavaSE专栏84】线程让步,一种线程调度的机制

    作者主页 :Designer 小郑 作者简介 :3年JAVA全栈开发经验,专注JAVA技术、系统定制、远程指导,致力于企业数字化转型,CSDN学院、蓝桥云课认证讲师。 主打方向 :Vue、SpringBoot、微信小程序 本文讲解了 Java 中线程让步的语法和应用场景,并给出了样例代码。线程让步是一种

    2024年02月11日
    浏览(32)
  • 学习JavaSE基础-day1

    JRE 和 JDK JRE:Java运行环境,如果想要运行Java程序至少要安装JRE JDK:Java开发环境(开发工具包),如果要开发Java程序,必须安装JDK JRE = JVM + 核心类库 JDK = JRE + 开发工具包 JDK JRE JVM 关系如图所示:     JDK下载地址:www.oracle.com 配置Path环境变量:希望可以在命令窗口的任意的

    2024年02月07日
    浏览(102)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包