java多线程—-三种线程的开辟方式

对于所有语言来说,多线程的编程是绝不可少的。同样的Java语言也包含了多线程的开发。首先,我们先来了解一下Java语言的多线程实现方式。

一、Java 多线程实现方式

java中实现多线程的方式有三种,接下来我将会逐个进行介绍。

1.继承Thread类

继承Thread类是Java中比较常见,也是很基础的一种实现Java多线程的方式。实现的方式也比较简单,只要将需要实现多线程的Java类继承java.lang.Thread类,重写run()方法即可。

2.实现Runnable接口

1.实现Runnable接口,并且实现run()方法。

2.创建Thread对象,用实现Runnable接口的对象作为参数实例化该对象

3.调用Thread的start()方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52

public class TreadTest {
	public static void main(String[] args) {
		//线程实例化
		//1.继承Thread类,做一个线程子类
		Mythread mt=new Mythread();
		//注意
		//需要调用start()方法,使线程启动
		//start方法会开启一个新的线程,来执行run中的逻辑
		//如果直接调用run()方法,则线程不会进入到就绪状态
		mt.start();
		System.out.println("主线程逻辑结束了");
		//2.实现runnable接口
		Mythread2 mt2=new Mythread2();
		Thread t=new Thread(mt2);
		t.start();
		
		
	}

}
/*
 *这是一个自定义的线程类 
 */
class Mythread extends Thread{
	/*
	 * 需要重写run方法
	 * 将需要并发执行的方法写到run方法当中
	 * */
	@Override
	public void run() {
		for(int i=0;i<3;i++){
			System.out.println("子线程中的逻辑:"+i);
		}
		
	}
	
}
class Mythread2 implements Runnable{
	/*
	 * 需要重写run方法
	 * 将需要并发执行的方法写到run方法当中
	 * */

	public void run() {
		for(int i=0;i<3;i++){
			System.out.println("子线程2中的逻辑:"+i);
		}
		
	}
	
}

3.实现Callable接口,重写call()方法

Callable是属于Executor框架中的功能类,与Runnable接口相似,但是有比Runnable更强大的功能:

1) Callable 可以在任务结束后提供- 个返回值,Runnable 无法提供这个功能。

2) Callable 中的call( )方法可以抛出异常,而Runnable的run( )方法不能抛出异常。

3)运行Callable可以拿到一个Future 对象,Future对象表示异步计算的结果,它提供了检查计算是否完成的方法。由于线程属于异步计算模型,因此无法从别的线程中得到函数的返回值,在这种情况下,就可以使用Future来监视目标线程调用call()方法的情况,当调用Future 的get( )方法以获取结果时,当前线程就会阻塞,直到ell )方法结束返回结果。

你可能感兴趣的:(java多线程—-三种线程的开辟方式)