[面试]java创建线程有几种方式?

来源:互联网 发布:网络编程工资多少 编辑:程序博客网 时间:2024/05/04 07:07

一、继承Thread类创建线程子类

1.在这子类中重写run方法,在run方法内写线程任务代码

2.创建该子类实例,即是创建了一个线程实例

3.调用该实例的start方法来启动该线程

二、建一个类去实现Runnable接口

1.该类去实现接口的run方法,run方法内写线程任务代码

2.创建该类实例,把该实例当作一个标记target传给Thread类,如:Thread t = new Thread(该类实例);即创建一个线程对象

3.调用线程的start方法来启用该线程.


三、通过Callable 接口和 RunnableFuture创建线程

                Callable<Integer> cl = new Callable<Integer>(){public Integer call() throws Exception {//业务逻辑...return null;}};FutureTask<Integer> ft =  new FutureTask<Integer>(cl); //实现了RunnableFuture 接口Thread t = new Thread(ft);t.start();


优劣:

二、三两种方式是实现某接口,可以去继承其他类,操作相对灵活,并且能多个纯种共享一个对象Thread t = new Thread(ft);里面的ft对象能多个线程共享,劣势是编程相对复杂

一种方式是继承Thread类,不能再继承其他类,编程相对简单

0 0
原创粉丝点击