Java多线程学习笔记— “建立线程的两种方法 (Thread类和Runnable接口)”

Posted 一切因为是码农

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java多线程学习笔记— “建立线程的两种方法 (Thread类和Runnable接口)”相关的知识,希望对你有一定的参考价值。

在Java中建立线程实际上有三种方法:继承Thread类实现Runnable接口以及实现Callable接口,这里只先讨论前两种建立线程的方法。

一、继承Thread类创建线程

Java通过Thread类把线程所需功能都封装了起来;要想建立一个线程,必须要一个线程执行函数(对应Thread类中的run()方法),线程要启动,就要调用Thread类的start()方法。(调用start()方法后,如果线程成功启动,就自动调用Thread类的run()方法)

大体步骤:在这里插入图片描述
具体实例:

package bookTest;

class Thread1 extends Thread{
	//有参构造方法
	public Thread1(String name) {
		super(name);
	}
	public void run() {
		//获取此线程名称
		System.out.println("线程1:"+Thread.currentThread().getName());
	}
	
}

class Thread2 extends Thread{
	//有参构造方法
	public Thread2(String name) {
		super(name);
	}
	public void run() {
		//获取此线程名称
		System.out.println("线程2:"+Thread.currentThread().getName());
	}
		
}

public class ThreadDemo {

	public static void main(String[] args) {
		Thread1 thread1 = new Thread1("thread1");
		Thread2 thread2 = new Thread2("thread2"); 
		thread1.start();
		thread2.start();
		System.out.println("主线程:"+Thread.currentThread().getName());

	}

}

(上述代码中“Thread.currentThread().getName()”用于获取当前线程名,线程名可以通过Thread的有参构造方法自定义,也可以不设置)
编写时注意:
一个Java程序中只能有一个public类(公共类);
子类要重写Thread类的run()方法,并且在run()方法内部定义线程的功能语句。

运行结果:
在这里插入图片描述


二、实现Runnable接口创建线程

创建线程的另一种方法是实现Runnable接口,该接口只有一个run()方法;该接口的实现类并不代表是“线程”类,不能直接运行,必须通过Thread类的实例才能创建并运行该线程。

大体步骤:

  1. 定义Runnable接口的实现类,并重写run()方法;
  2. 建立一个Thread对象,并将Runnable接口的实现类的对象作为参数传入Thread类的构造方法
  3. 通过调用Thread类的start()方法启动线程,并运行。

具体实例:

package bookTest;

class Runnable1 implements Runnable {
	
	public void run() {
		//获取此线程名称
		System.out.println("线程1:"+Thread.currentThread().getName());
	}
	
}

class Runnable2 implements Runnable{
	
	public void run() {
		//获取此线程名称
		System.out.println("线程2:"+Thread.currentThread().getName());
	}
		
}


public class RunnableDemo  {

	public static void main(String[] args) {
		Runnable1 r1 = new Runnable1();
		Runnable2 r2 = new Runnable2();
		//将实现类的对象作为参数传入Thread类的构造方法
		Thread t1 = new Thread(r1);
		Thread t2 = new Thread(r2);
		t1.start();
		t2.start();
		System.out.println("主线程:"+Thread.currentThread().getName());
	}

}

运行结果:
在这里插入图片描述

以上是关于Java多线程学习笔记— “建立线程的两种方法 (Thread类和Runnable接口)”的主要内容,如果未能解决你的问题,请参考以下文章

Java 多线程 - 学习笔记

java多线程/并发学习笔记

java学习笔记 --- 多线程(多线程的控制)

Java多线程编程(学习笔记)

Java学习笔记—多线程

Java多线程学习笔记