栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

创建线程的三种方式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

创建线程的三种方式

1.继承Thread类
public class MyThread extends Thread{

    @Override
    public void run() {
        for(int i=0;i<10;i++){
            System.out.println("锄禾日当午"+i);
        }
    }
}
public static void main(String[] args){
MyThread m=new MyThread();
       m.start();
}
2.实现Runnable接口
public class MyRunable implements Runnable{

    @Override
    public void run() {
        for (int i=0;i<10;i++){
            System.out.println("一二三四五"+i);
        }

    }
}
public static void main(String[] args){
MyRunable myRunable=new MyRunable();
        Thread t=new Thread(myRunable);
        t.start();
}

3.实现Callable接口

package fangfa1;
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;


public class Demo5 {
    public static void main(String[] args) {
        Call call = new Call();
        FutureTask futureTask=new FutureTask<>(call);
        new Thread(futureTask).start();
        for(int i=0;i<100;i++){
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(i);
        }
    }
    static class Call implements Callable {


        @Override
        public Integer call() throws Exception {
            for(int i=0;i<100;i++){
                Thread.sleep(1000);
                System.out.println(i);
            }
            return 100;
        }
    }
}

注意:面试时会问到第三种创建方式(但是平常极少用)

Runnable与Callable的相同点

(1)都是接口

(2)都可以编写多线程程序

(3)都采用Thread.start()启动线程

Runnable与Callable的不同点

(1)Ruunnable没有返回值,Callable可以返回执行结果(需要调用FutureTask.get()得到,此方法会阻塞主进程的继续往下执行,如果不调用不会阻塞)

(2)Callbale中的call()允许抛出异常,Runnable中的run()不允许

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/736260.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号