电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

Java多线程开发方法2

11页
  • 卖家[上传人]:Ron****an
  • 文档编号:147786570
  • 上传时间:2020-10-13
  • 文档格式:DOCX
  • 文档大小:211.23KB
  • / 11 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、Java多线程(一)多线程基础前言本文主要讲解java多线程的基础,以及一些常用方法。关于线程同步、ExecutorService框架我会放到后续的文章进行讲解。进程与线程的区别进程进程简单的来说就是在内存中运行的应用程序,一个进程可以启动多个线程。比如在windows中一个运行EXE文件就是一个进程。线程同一个线程中的进程共用相同的地址空间,同时共享进程所拥有的内存和其他资源。线程Demo-继承Thread类首先我们我们继承java.lang.Thread类来创建线程。package top.crosssoverjie.study.Thread;public class TestThread public static void main(String args) System.out.println(主线程ID是: + Thread.currentThread().getId(); MyThread my = new MyThread(线程1); my.start() ; MyThread my2 = new MyThread(线程2) ; /* * 这里直接调用my2的run()

      2、方法。 */ my2.run() ; class MyThread extends Thread private String name; public MyThread(String name) this.name = name; Override public void run() System.out.println(名字: + name + 的线程ID是= + Thread.currentThread().getId(); 输出结果:主线程ID是:1名字:线程2的线程ID是=1名字:线程1的线程ID是=9由输出结果我们可以得出以下结论: my和my2的线程ID不相同,my2和主线程ID相同。说明直接调用run()方法不会创建新的线程,而是在主线程中直接调用的run()方法,和普通的方法调用没有区别。 虽然my的start()方法是在my2的run()方法之前调用,但是却是后输出内容,说明新建的线程并不会影响主线程的执行。线程Demo-实现Runnable接口除了继承java.lang.Thread类之外,我们还可以实现java.lang.Runnable接口来创建线程。pack

      3、age top.crosssoverjie.study.Thread;public class TestRunnable public static void main(String args) System.out.println(主线程的线程ID是+Thread.currentThread().getId(); MyThread2 my = new MyThread2(线程1) ; Thread t = new Thread(my) ; t.start() ; MyThread2 my2 = new MyThread2(线程2) ; Thread t2 = new Thread(my2) ; /* * 方法调用,并不会创建线程,依然是主线程 */ t2.run() ; class MyThread2 implements Runnable private String name ; public MyThread2(String name) this.name = name ; Override public void run() System.out.println(线程+nam

      4、e+的线程ID是+Thread.currentThread().getId(); 输出结果:主线程的线程ID是1线程线程2的线程ID是1线程线程1的线程ID是9notes: 实现Runnable的方式需要将实现Runnable接口的类作为参数传递给Thread,然后通过Thread类调用Start()方法来创建线程。 这两种方式都可以来创建线程,至于选择哪一种要看自己的需求。直接继承Thread类的话代码要简洁一些,但是由于java只支持单继承,所以如果要继承其他类的同时需要实现线程那就只能实现Runnable接口了,这里更推荐实现Runnable接口。实际上如果我们查看Thread类的源码我们会发现Thread是实现了Runnable接口的:线程中常用的方法序号方法介绍1public void start()使该线程执行,java虚拟机会调用该线程的run()方法。2public final void setName(String name)修改线程名称。3public final void setPriority(int privority)修改线程的优先级。4public fin

      5、al void setDaemon(false on)将该线程标记为守护线程或用户线程,当正在运行线程都是守护线程时,java虚拟机退出,该方法必须在启动线程前调用。5public final void join(long mills)等待该线程的终止时间最长为mills毫秒。6public void interrupt()中断线程。7public static boolean isAlive()测试线程是否处于活动状态。如果该线程已经启动尚未终止,则为活动状态。8public static void yield()暂停当前线程执行的对象,并执行其他线程。9public static void sleep(long mills)在指定毫秒数内,让当前执行的线程休眠(暂停)。10public static Thread currentThread()返回当前线程的引用。方法详解- public static void sleep(long mills) package top.crosssoverjie.study.Thread;public class TestSleep privat

      6、e int i = 10 ; private Object ob = new Object() ; public static void main(String args) TestSleep t = new TestSleep() ; MyThread3 thread1 = t.new MyThread3() ; MyThread3 thread2 = t.new MyThread3() ; thread1.start() ; thread2.start() ; class MyThread3 extends Thread Override public void run() synchronized (ob) i+ ; System.out.println(i的值:+i); System.out.println(线程:+Thread.currentThread().getName()+进入休眠状态); try Thread.currentThread().sleep(1000) ; catch (Exception e) e.printStackTrace(); System.ou

      7、t.println(线程:+Thread.currentThread().getName()+休眠结束); i+; System.out.println(i的值:+i); 输出结果:i的值:11线程:Thread-0进入休眠状态线程:Thread-0休眠结束i的值:12i的值:13线程:Thread-1进入休眠状态线程:Thread-1休眠结束i的值:14由输出结果我们可以得出: 当Thread0进入休眠状态时,Thread1并没有继续执行,而是等待Thread0休眠结束释放了对象锁,Thread1才继续执行。当调用sleep()方法时,必须捕获异常或者向上层抛出异常。当线程休眠时间满时,并不一定会马上执行,因为此时有可能CPU正在执行其他的任务,所以调用了sleep()方法相当于线程进入了阻塞状态。方法详解- public static void yield() package top.crosssoverjie.study.Thread;public class Testyield public static void main(String args) MyThread4 my = new MyThread4() ; my.start() ; class MyThread4 extends Thread Override public void run() long open = System.currentTimeMillis(); int count= 0 ; for(int i=0 ;i1000000;i+) count= count+(i+1);/ Thread.yield() ; long end = System.currentTimeMillis(); System.out.println(用时:+(end-open)+毫秒); 输出结果:用时:1毫秒如果将 Thread.yield()注释取消掉,输出结果:用时:116毫秒

      《Java多线程开发方法2》由会员Ron****an分享,可在线阅读,更多相关《Java多线程开发方法2》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.