JAVA中的多线程——概述

本文详细介绍了Java中创建线程的两种方法:继承Thread类和实现Runnable接口。通过实例演示了如何定义和启动线程,解释了这两种方式的区别及推荐使用实现Runnable接口的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
 * 进程:是正在执行中的程序
 * 		每一个进程执行都有一个执行顺序。该顺序是一个执行路径,或者叫一个控制单元
 * 
 * 线程:就是进程中的一个独立的控制单元
 * 		线程在控制着进程的执行
 * 
 * 一个进程中至少有一个线程
 * 
 * java虚拟机启动的时候会有一个进程java.exe
 * 
 * 该进程中至少有一个线程负责java程序的执行
 * 而且这个线程运行的代码存在于main()中
 * 该线程称之为主线程
 * 
 * 扩展:其实更细节说明虚拟机,jvm启动不止一个线程,还有负责垃圾回收机制的线程
 * 
 * 在自定义代码中自定义线程
 * java已经提供了对线程这类事物的描述,就Thread类
 * 创建线程的第一种方法:继承thread类
 * 步骤:
 * 1、定义类继承Thread类
 * 2、复写Thread类中的run方法(将自定义代码存储在run方法中,让线程运行)
 * 3、调用线程的start方法
 *    该方法的作用:启动线程,调用run方法
 *    
 * 覆盖run方法原因
 * Thread类用于描述线程
 * 该类定义了一个功能,用于存储线程要运行的方法,该存储功能就是run方法
 * 也就是说thread类中的run方法,用于存储线程要运行的方法
 * 
 * 创建线程的第二种方法:实现runnable接口
 * 步骤:
 * 1、定义类实现runnable接口
 * 2、覆盖runnable接口中的run方法
 * 3、通过thread类建立线程对象
 * 4、将runnable接口的子类对象作为实际参数传递给thread类的构造函数
 * 5、调用thread类的start方法开启线程,并调用runnable接口子类的run方法
 *    
 * 实现方式和继承方式的区别
 * 实现方式好处:避免了单继承的局限性,在定义线程时,建议使用实现方式
 * 
 * 继承方式:线程代码存放在thread子类run方法中
 * 实现方式:线程代码存放在接口的子类run方法中
 *    
 * 运行结果每次不同
 * 因为多个线程都获取cpu的执行权,cpu执行到谁,谁就运行
 * 在某一时刻只能有一个程序在运行(多核除外)
 * cpu在做着快速的切换,以达到看上去是同时运行的效果
 * 可以形象的把多线程的运行行为看作在互相抢夺cpu资源
 * 
 * 在这就是多线程的一个特点:随机性
 * 
 * */


class Demo extends Thread{
	public void run(){
		for(int x=0;x<60;x++)
		System.out.println("Demo run--"+x);
	}
}

public class ThreadDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Demo demo=new Demo();
		demo.start();
		for(int x=0;x<60;x++)
			System.out.println("hello world--"+x);
	}

}



                                                                                            ------------------By   仔鸡

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值