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

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

一、继承Thread类创建线程

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

大体步骤:Java多线程学习笔记(2)— “建立线程的两种方法 (Thread类和Runnable接口)”_第1张图片
具体实例:

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()方法内部定义线程的功能语句。

运行结果:
Java多线程学习笔记(2)— “建立线程的两种方法 (Thread类和Runnable接口)”_第2张图片


二、实现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多线程学习笔记(2)— “建立线程的两种方法 (Thread类和Runnable接口)”_第3张图片

你可能感兴趣的:(java,java,多线程)