A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

java中有几种方法可以实现一个线程?

5 个回复

倒序浏览
回复 使用道具 举报
一个main就是一个主线程了实现一个线程不用研究几种方法了
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
总共三种:
1.继承Thread:
        a.子类继承Thread类;
        b.重写子类的run方法;
        c.将要执行的代码放在run()方法中;
        d.创建子类的对象;
        e.子类的对象调用.start()方法
2.实现Runnable接口
        a.子类实现Runnable接口;
        b.重写子类的run()方法;
        c.将要执行的代码放在run()方法中;
        d.将子类的对象传递给Thread的构造方法;
        e.Thread的对象调用.start()方法.


第3种:
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
/*
* 线程的第三种创建方式;
* */
public class Demo6_Callable {
        public static void main(String[] args) throws InterruptedException, ExecutionException {
                ExecutorService pool = Executors.newFixedThreadPool(2);                        //创建线程池
                Future<Integer> f1 = pool.submit(new MyCallable(100));                        //将线程放进池子里并执行
                Future<Integer> f2 = pool.submit(new MyCallable(50));
                System.out.println(f1.get());
                System.out.println(f2.get());
                pool.shutdown();                                                                                                //关闭线程池               
        }
}
class MyCallable implements Callable<Integer> {
        private int num;
        public MyCallable(int num) {
                this.num = num;
        }
        public Integer call() throws Exception {
                int sum = 0;
                for(int i = 1;i <= num;i++) {
                        sum += i;
                }
                return sum;
        }       
}

来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
啦啦啦啦啦绿绿绿绿绿绿绿
回复 使用道具 举报
灌灌灌灌灌过过过过过过过过过过过
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马