1 继承Thread类
2 实现Runnable接口
3 实现Callable接口
4 多线程池
1-2两方法 10s学会教程网址:
http://t.csdnimg.cn/UPy1r
本文简略提及多线程池 -》提前创建多个线程,放在一个“容器”,用时取出,不用即放回池中
优点-》响应速度快,降低资源消耗(无需每次都创建线程),便于线程管理
本文详细说说Callable接口时怎么回事:
1.一个类实现接口,重写call()方法,这里有三点注意,分别不同颜色勾画
黄色——call()会有返回值【比Runnable接口的run()优秀的地方】
红色——call()返回值时可以又Callable<>内泛型类型决定的
蓝色——call()会抛出异常,在具体调用call()时,需要用try_catch去接收异常
2.实现类中创建线程,利用构造器FutureTask(Callable),不要忘记call()方法有回调值,所以保存该回调值的变量泛型<>必须与Callablel泛型一致
真正的线程是 Thread(FutureTask)
3.记得try_catch,call()抛出过异常,我们必须接收,打印
这里的get()在FutureTask.class声明,能回调call()的返回值