java中创建线程的方式
来源:互联网 发布:重生之网络娱乐几女主 编辑:程序博客网 时间:2024/05/16 14:47
ava中创建线程主要有三种方式:Run为Runnable接口的实现类。或者写为:接口不可实例化,所以参数必须为实现接口的类或匿名类。
一、继承Thread类创建线程类
①定义Thread类的子类,并重写run方法。
②创建Thread子类的实例。
③调用start()方法。
访问当前线程:Thread.currentThread().
二、通过Runnable接口创建线程类
同上,只是改为定义runnable接口的实现类。
启动 new Thread(Runnable r,String name).start();
例:
- new Thread(new Run(),"r1").start();
- package thread;
- public class Main {
- public static void main(String[] args) {
- new Thread(new Runnable(){
- @Override
- public void run() {
- System.out.println("run()");
- }},"r1").start();
- }
- }
三、通过Callable和FutureTask创建线程
①创建Callable接口的实现类,并实现call()方法,该call()方法将作为线程执行体,并且有返回值。
②创建Callable实现类的实例,使用FutureTask类来包装Callable对象,该FutureTask对象封装了该Callable对象的call()方法的返回值。
③使用FutureTask对象作为Thread对象的target创建并启动新线程。
④调用FutureTask对象的get()方法来获得子线程执行结束后的返回值
例:- package thread;
- import java.util.concurrent.Callable;
- public class MyCallable implements Callable<Integer>{
- @Override
- public Integer call() throws Exception {
- // TODO Auto-generated method stub
- return 1111;
- }
- }
- package thread;
- import java.util.concurrent.ExecutionException;
- import java.util.concurrent.FutureTask;
- public class Main{
- public static void main(String[] args) {
- FutureTask<Integer> ft = new FutureTask<>(new MyCallable());
- new Thread(ft).start();
- try {
- System.out.println(ft.get());
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (ExecutionException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
使用接口实现线程的好处:
多个线程可共享一个target对象,所以非常适合多个相同线程来处理同一份资源的情况,从而将CPU、代码和数据分开,形成清晰的模型,较好地体现了面向对象的思想。
参考:http://blog.csdn.net/longshengguoji/article/details/41126119
阅读全文
0 0
- Java中线程的创建有两种方式
- java中创建线程的方式
- Java线程的创建方式
- Java 创建线程的方式
- java创建线程的方式
- java线程的创建方式
- java创建线程的方式
- java中创建线程的的几种方式
- java中创建线程的的几种方式
- java中创建线程的两种方式
- Java中创建线程的两种方式
- Java中创建线程的两种方式
- Java中创建线程的两种方式
- java中创建线程主要的三种方式
- java中创建线程的两种方式
- java中创建线程主要有三种方式
- Java线程创建方式
- java 中线程的创建方式,及对线程的个人理解
- SpaceX:2018年将两名“土豪”送去环月旅行
- Linux下如何创建线程池
- 乐视超级电视再次涨价,同时不忘拉某些友商做垫背
- Android全屏切换到非全屏界面的视觉问题
- Html5的拖放功能
- java中创建线程的方式
- Scrapy 小技巧:选择器(Selectors)怎么写
- 展讯首发14nm芯片,9861与麒麟950、骁龙820相比怎么样?| MWC2017
- centos7编辑ip
- Linux:使用ulimit设置文件最大打开数
- 分布式缓存架构基础
- 在Android Studio 3.0中使用C语言以及汇编语言
- 加密算法——DES
- 三星缺席,华为P10让巴展变天了吗?丨MWC 2017