黑马程序员技术交流社区

标题: java中有几种方法可以实现一个线程? [打印本页]

作者: xyy222    时间: 2016-12-4 01:07
标题: java中有几种方法可以实现一个线程?
java中有几种方法可以实现一个线程?

作者: Doke_Chen    时间: 2016-12-4 01:25
两种,

作者: 王大宝    时间: 2016-12-4 10:05
一个main就是一个主线程了实现一个线程不用研究几种方法了

作者: gczsjj    时间: 2017-1-11 00:09
总共三种:
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;
        }       
}


作者: 郑重小神    时间: 2017-1-11 22:50
啦啦啦啦啦绿绿绿绿绿绿绿
作者: 郑重小神    时间: 2017-1-11 22:50
灌灌灌灌灌过过过过过过过过过过过




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2