已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浆砌块石专项施工方案
- 医院全面提升医疗质量工作行动方案(2025年)
- 装饰维修专项施工方案
- 基坑地下水降排水施工方案
- 2026年西北政法大学教学科研岗位招聘(28人)笔试模拟试题及答案解析
- 2026成都市新都区教科院附属幼儿园招聘5人考试模拟试题及答案解析
- 2026山东济宁医学院附属医院招聘工作人员51人笔试备考题库及答案解析
- 2026陕西西安西北有色医院招聘13人笔试模拟试题及答案解析
- 2026年镁质耐火砖行业分析报告及未来发展趋势报告
- 2026贵州黔东南州榕江县兴华水族乡摆贝村级集体经济有限公司选聘职业经理人(总经理)1人考试备考题库及答案解析
- 雨课堂学堂在线学堂云《金融法:金融科技与人工智能法(复旦)》单元测试考核答案
- 市场监管行政执法培训
- 第6课 爱护动植物 第二课时 课件(内置视频)-2025-2026学年道德与法治二年级下册统编版
- FDA食品安全计划PCQI范本
- 轨道交通系统运营与维护手册(标准版)
- 小学科学新教科版二年级下册2.5.设计钓鱼玩具 练习题(附参考答案和解析)2026春
- 2025年中国铁路武汉局集团有限公司招聘高校毕业生1291人(二)笔试参考题库附带答案详解
- 2026年设备安装质量员考试题库(附答案)
- 《缺血性脑卒中动物模型评价技术规范第1部分:啮齿类动物》编制说明
- 2025-2026学年西宁市城东区数学四年级上学期期中质量跟踪监视试题含解析
- 2026中国旅游集团总部及所属企业岗位招聘9人参考题库附答案
评论
0/150
提交评论