




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
多线程一直给大家一种很难的感觉,其实接触了解之后你会发现,没有大家想的那么深奥,下面先简单的介绍下实现线程的三种方式:1、继承Thread(1)定义Thread类的子类,并重写该类的run方法,该方法的方法体就代表了线程需要完成的任务。可以把run方法称为线程执行体。(2)创建Thread子类的实例,即创建了线程对象。(3)调用线程对象的start方法来启动线程。package com.xiaomo.thread;public class ExtendThread extends Thread private int i;public void run() / 当线程继承Thread类时,直接使用this即可获取当前线程/ Thread对象的getName()返回当前线程的名字/ 因此可以直接调用getName()方法返回当前线程的名字for (; i 100; i+) System.out.println(this.getName() + + i);public static void main(String args) for (int i = 0; i 100; i+) / 调用Thread的currentThread()方法获取当前线程System.out.println(Thread.currentThread().getName() + + i);if (i = 20) / 创建并启动第一个线程new ExtendThread().start();/ 创建并启动第二个线程new ExtendThread().start();结果:main 0main 1。main 19main 20Thread-0 0Thread-0 1。Thread-0 21Thread-0 22。Thread-1 98Thread-1 99继承Thread类的实现类不共享实例属性。2、实现Runnable(1)定义Runnable接口的实现类,并重写该接口的run方法,该方法的方法体就是该线程的线程执行体。(2)创建Runnable实现类的实例,并以此实例作为Thread的target来创建Thread对象,该Thread对象才是真正的线程对象。(3)调用线程对象的start方法来启动该线程。package com.xiaomo.thread;public class ImplRunnable implements Runnable private int i;public static void main(String args) for (int i = 0; i 100; i+)System.out.println(Thread.currentThread().getName()+ +i);if(i = 20)ImplRunnable ir = new ImplRunnable();new Thread(ir,线程一).start();new Thread(ir,线程二).start();Overridepublic void run() for (; i 100; i+) / 当线程实现Runnable接口时/ 如果想获得当前线程,只能用Thread.currentThread()方法System.out.println(Thread.currentThread().getName() + + i);结果:main 0main 1main 2。main 19main 20线程一 0线程一 1。线程一 70线程二 72main 46线程二 74线程一 73线程二 75。线程一 79main 98main 99实现Runnable类的实现类共享实例属性。3、使用Callable和Future创建线程(1)创建Callable接口的实现类,并实现cal方法,该call方法将作为线程执行体,且该call方法有返回值。(2)创建Callable实现类的实例,使用FutureTask类来包装Callable对象,该FutureTask对象封装了该Callable对象的call方法的返回值。(3)使用FutureTask对象作为Thread对象的target创建并启动新线程。(4)调用FutureTask对象的get方法来获取子线程执行结束后的返回值。package com.xiaomo.thread;import java.util.concurrent.Callable;import java.util.concurrent.FutureTask;public class ImplCallable implements Callable public static void main(String args) /创建Callable对象ImplCallable ic = new ImplCallable();/使用FutureTask来包装Callable对象FutureTask task = new FutureTask(ic);for (int i = 0; i 100; i+) System.out.println(Thread.currentThread().getName()+ +i);if(i = 20)/实质还是以Callable对象来创建并启动线程new Thread(task, 有返回值的线程).start();try/获取线程返回值System.out.println(子线程的返回值:+task.get();catch(Exception ex)ex.printStackTrace();/实现call()方法,作为线程执行体Overridepublic Integer call() throws Exception int i = 0;for (; i 100; i+) System.out.println(Thread.currentThread().getName() + + i);/call方法可以有返回值ret
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CCOA 15-2020稻壳白炭黑
- T/CCMA 0130-2022沥青路面热风微波复合加热就地热再生机组
- T/CAPMA 3-2017生貉皮质量检验
- 嘉实基金java面试题及答案
- 公司集群面试题及答案
- 概论1考试题及答案
- 工作类面试题及答案
- 广东中考试题及答案
- 动漫分析面试题及答案
- 人的智能与人工智能课件
- 2022年兖州煤业榆林能化有限公司招聘笔试试题及答案解析
- 国家开放大学《财务管理#》形考任务1-4参考答案
- 医院检验科冰箱温度登记表
- 常见异常心电图识别及处理课件
- TCVN-2622-越南建筑防火规范(中文版)
- 重庆交通大学-黄璇-答辩通用PPT模板
- 中国医院质量安全管理 第4-13部分:医疗管理住院患者健康教育 T∕CHAS 10-4-13-2020
- 新沪教牛津版七年级上册英语全册教案
- 《航空专业英语》课件维修专业基础英语R1
- 【课件】第17课实验与多元——20世纪以来的西方美术课件高中美术人教版(2019)美术鉴赏
- 2024年义务教育国家课程设置实施方案
评论
0/150
提交评论