多线程怎么实现,分别有什么特点
继承thread类、实现runnable接口、实现callable接口
继承thread类的类创建的对象就是线程对象,可以直接start();
实现runnable接口的类创建的对象是个target,要作为参数放在创建thread对象里,正因为是个参数,所以可以放到多个创建的thread对象里,实现多个相同的线程对一个资源的操作,然后java单继承,实现接口可以防止子类需要创建线程没办法继承类
3、实现callable接口,重写call()方法,可以有返回值,使用futuretask对象接收返回值,再用futuretask的get()得到返回值
Callable<Integer> t=new thread1();
FutureTask<Integer> futureTask=new FutureTask<>(t);
new Thread(futureTask).start();
int a=futureTask.get();
借助线程池来执行
ExecutorService exe= Executors.newCachedThreadPool();
FutureTask<Integer> futureTask= (FutureTask<Integer>) exe.submit(new thread1());
int a=futureTask.get();
还可以用futuretask类型的集合获得很多返回值
继承thread类、实现runnable接口、实现callable接口
继承thread类的类创建的对象就是线程对象,可以直接start();
实现runnable接口的类创建的对象是个target,要作为参数放在创建thread对象里,正因为是个参数,所以可以放到多个创建的thread对象里,实现多个相同的线程对一个资源的操作,然后java单继承,实现接口可以防止子类需要创建线程没办法继承类
3、实现callable接口,重写call()方法,可以有返回值,使用futuretask对象接收返回值,再用futuretask的get()得到返回值
Callable<Integer> t=new thread1();
FutureTask<Integer> futureTask=new FutureTask<>(t);
new Thread(futureTask).start();
int a=futureTask.get();
借助线程池来执行
ExecutorService exe= Executors.newCachedThreadPool();
FutureTask<Integer> futureTask= (FutureTask<Integer>) exe.submit(new thread1());
int a=futureTask.get();
还可以用futuretask类型的集合获得很多返回值
全部评论
相关推荐
点赞 评论 收藏
分享
2025-12-31 13:48
门头沟学院 产品经理
一天代码十万三:但有没有可能,想进高质量实习也需要实习经历?有时候多段实习就是为了找到更好的实习,并不一定是为了写到简历 点赞 评论 收藏
分享
OPPO公司福利 1108人发布