java创建线程的三种方式

多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。即在一个程序中可以同时运行多个不同的线程来执行不同的任务, 也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。

创建线程的三种方式:

  1. 继承 Thread()
  2. 实现 Runnable接口
  3. 实现Callable接口

新建线程

新建线程很简单。只要使用 new 关键字创建一个线程对象,并且将它 start() 起来即可。

Thread t1 = new Thread();
t1.start()

线程 Thread 有一个 run() 方法,start() 方法就会新建一个线程并让这个线程执行 run() 方法。

注意:不要用 run() 方法开启新线程。它只会在当前线程中串行执行 run() 方法中的代码。

如果你想让线程做点什么,就必须重写 run() 方法

Thread t1 = new Thread() {
	@Override
	public void run() {
		System.out.println("Hello, I am t1");
	}
}
t1.start();

上述代码使用匿名内部类,重写了 run() 方法。也可以通过继承线程 Thread,重写 run() 方法来自定义线程。

Runnable

考虑道 Java 是单继承的,也就是说继承本身也是一种很宝贵的资源,因此,我们也可以使用 Runnable 接口来实现同样的操作。

public interface Runnable {
	public abstract void run();
}

默认的 Thread.run() 方法就是直接调用内部的 Runnable 接口。因此,使用 Runnable 接口实现多线程更为合理。

public class Thread2 implements Runnable {
	public static void main(String[] args) {
		Thread t1 = new Thread(new Thread2);
		t1.start();
	}
	@Override
	public void run() {
	System.out.println("I am Runnable");
}

Callable

Callable 接口用来创建一个被线程执行的类,和 Runnable 类似,但又有区别。

public class TestCallable1 {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        CallableDemo callableDemo = new CallableDemo();
        FutureTask futureTask = new FutureTask<>(callableDemo);
        new Thread(futureTask).start();
        String res = (String)futureTask.get();
        System.out.println(res);
    }
}
 
class CallableDemo implements Callable<String>{
 
    @Override
    public String call() {

        return "I am Callable";
    }
}

Callable 和 Runnable 区别:

  1. Callable 规定的方法是 call(),而 Runnable 规定的方法是 run()。

  2. Callable 的任务执行后可返回值,而 Runnable 的任务是不能返回值的。

  3. call() 方法可抛出异常,而 run() 方法是不能抛出异常的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码上行舟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值