已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年山东省枣庄市国家国家职业技能鉴定考评员培训模拟试卷(含答案)
- 2026年高级养老护理员资格考试题库及答案真题题库
- 2026年信贷从业人员考试题库带答案
- 2026年儿童心理学基础知识考试题库及答案
- 2026年应急管理试题库及参考答案
- 江西生态文明题库带答案
- 2026年高级数控车工技师职业资格考试题库及答案
- 国考在线笔试题库及答案
- 2026年生物工程试题库带答案
- 城管笔试题库大全(含答案)
- 司机安全交底培训内容课件
- (正式版)DB15∕T 2260-2021 《草原损害鉴定技术规范》
- 彝族年活动策划方案
- 艾灸馆秩序管理制度
- 中医皮肤美容学课件
- T/SHSOT 015.1-2024皮肤角质层胶带剥离方法及应用第1部分:角质层剥离方法
- 消防辅助执法试题及答案
- 学校交通安全家长会课件
- 泰勒《课程与教学的基本原理》讲义
- DB45T 2484-2022 闽楠轻基质容器大苗育苗技术规程
- JBT 12000-2014 火电超临界及超超临界参数阀门用承压锻钢件技术条件
评论
0/150
提交评论