Java线程的创建——继承Thread
本文最后更新于546 天前,其中的信息可能已经过时,如有错误请发送邮件到echobydq@gmail.com

     

前提

主要通过继承java.lang.Thread类,并覆盖Thread类的run()方法完成线程的创建

Thread类是一个具体的类,即不是抽象类,该类封装了线程的行为。要创建线程,需先创建一个Thread类的子类,Thread类中有两个最重要的方法run()和start()

run()方法必须重写,把线程所要的代码加入到这个方法中,也就是线程体

虽然run()方法是线程体,但不能直接调用,而是通过调用start()方法来启动线程。在调用start()的时候,start()方法会首先进行与多线程相关的初始化,然后调用run()方法

start和run方法

start: 用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行run()方法,这里方法run称为线程体,它包含了要执行的这个线程的内容,run方法运行结束,此线程随机终止。


run:run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码,这样就没有达到写线程的目的

代码

public class MyThread extends Thread{
	//count变量用于统计打印次数并共享变量
	private static int count = 0;
	public MyThread(String name)
	{
		//super 关键字可以在子类的构造方法中显式地调用父类的构造方法
		//访问父类的成员方法和变量
		super(name);
	}
	public static void main(String[] args) {
		//main方法开始
		//实例化线程
		MyThread p = new MyThread("t1");
		p.start();
		//主线程main方法执行一个循环
		for(int i=1; i<4; i++){
			count++;
			//主线程中打印count+"main"变量的值,并换行
			System.out.println("主线程 "+ count +" main");
		}
	}

	public void run(){
		//线程类必须有run()方法
		for(int i=1; i<4; i++){
			count++;
			System.out.println("run方法 "+count+": "+this.getName());
		}
	}
}

运行结果

主线程 1 main
run方法 2: t1
主线程 3 main
run方法 4: t1
主线程 5 main
run方法 6: t1

这段程序用Java虚拟机启动程序后,main方法生成新线程t1,并通过for循环输出变量count的值和线程名称

觉得有帮助可以投喂下博主哦~感谢!
作者:Echo
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0协议
转载请注明文章地址及作者哦~
暂无评论

发送评论(请正确填写邮箱地址,否则将会当成垃圾评论处理) 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇