创建线程的三种方法

1. Thread
(1) run()方法编写执行代码
(2) start() 启动线程
(3) 通过创建Thread子类的实例创建线程对象
(4) 实例如下:

public class ThreadTest extends Thread{
    public void run(){
        System.out.println("ThreadTest run name:"+ getName());
    }

    public static void main(String[] args) {
        for(int i=0;i<10;i++){
            new ThreadTest().start();
        }
    }
}

2. Runnable
(1) run()方法编写执行代码
(2) start() 启动线程
(3) 先创建 Runnable实现类的实例,并依此作为Thread的target来创建Thread对象,该Thread对象才是真正的线程对象
(4) 实例如下:

public class RunnableTest implements Runnable {
    @Override
    public void run() {
        System.out.println("Runnable Test name "+Thread.currentThread().getName());
    }

    public static void main(String[] args) {
        for(int i=0; i<10; i++){
            RunnableTest rt = new RunnableTest();
            new Thread(rt,"线程编号"+i).start();
        }
    }
}

3. Callable
(1) call()方法编写执行代码;
(2) 先创建Callable实现类的实例,再使用FutureTask类来包装Callable对象,该FutureTask对象封装了该Callable对象的call()方法的返回值。
(3) 使用FutureTask对象作为Thread对象的target创建并启动新线程,调用FutureTask对象的get()方法来获得子线程执行结束后的返回值
(4) 实例如下:

public class CallableTest implements Callable<Void> {
    @Override
    public Integer call() throws Exception {
    	int i=0;
    	for(;i<10;i++){
       	 System.out.println("Callable Test name "+ Thread.currentThread().getName()+i);
    	}
    	return i;
}


    public static void main(String[] args) {
        CallableTest ct = new CallableTest();
        FutureTask ft = new FutureTask(ct);

        for(int i=0;i<10;i++){
            new Thread(ft,"线程编号 "+i).start();
        }
        try {
            System.out.println("线程返回值: "+ft.get());
        } catch (InterruptedException e) {
            e.printStackTrace();
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
    }
}

转载于:https://www.cnblogs.com/hunterCecil/p/6076545.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值