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类的实例才能创建并运行该线程。
大体步骤:
- 定义Runnable接口的实现类,并重写run()方法;
- 建立一个Thread对象,并将Runnable接口的实现类的对象作为参数传入Thread类的构造方法;
- 通过调用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接口)”的主要内容,如果未能解决你的问题,请参考以下文章