




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
线程的操作方法 在多线程中所有的操作方法实际上都是从Thread类开始的。所有的操作基本上都是Thread类中。下面看看线程类中的方法:1.获取和设置线程的名称 在Thread类中可以通过getName()方法取得线程的名字,通过setName()方法给线程设置名称 线程的名称一般在启动线程前设置,但也允许为已经运行的线程设置名称。允许两个Thread对象有相同的名字,但为了清晰,应当经量避免这中情况出现。 另外,如果程序并没有为线程起名字,则系统会自动为线程分配一个名称实例:public class MyThreadDemo implements Runnablepublic void run() for (int i = 0; i 10; i+) /currentThread()获取当前正在执行的线程对象 System.out.println(Thread.currentThread().getName()+运行,i=+i); public class ThreadDemo1 public static void main(String args) /创建目标对象 MyThreadDemo mt=new MyThreadDemo(); /创建并启动线程(系统自动设置线程名称) new Thread(mt).start(); /手动设置线程名称 new Thread(mt,线程1).start(); new Thread(mt,线程2).start();从执行结果来看,指定的名称会自动出现,如果没有指定会发现线程会使用自动编号的方式完成,按照Thread-0,Thread-1依次编号,实际上他肯定是在类中存在一个Static属性,来记录编号的。2.获取当前正在执行的线程对象程序我们使用currentThread()静态方法获取到当前正在运行线程的对象。实例:public class MyThreadDemo2 implements Runnable public void run() for(int i=0;i10;i+) System.out.println(Thread.currentThread().getName()+运行,i=+i); public class TreadDemo2 public static void main(String args) /创建目标对象 MyThreadDemo2 mt=new MyThreadDemo2(); /启动线程 new Thread(mt,线程1).start(); /调用run方法 mt.run();通过上面的程序你会发现,程序中由于直接通过线程的目标对象调用里面的run()方法,所以输出结果中就包含了一个“main”,此线程就是由“ mt.run();”产生的。因为此法是由主方法完成的,也就是说实际上主方法本身也是一个线程-主线程。问出现啦,既然主方法都是以线程的形式出现的,那么Java程序运行时到底启动了多少个线程?答案是至少启动了两个线程。 从之前的学习来看,每当Java程序执行的时候,实际上都会启动一个jvm,没一个jvm实际上就是在操作系统中启动一个进程。Java本身具备了垃圾收集机制,所以在Java程序运行时至少启动两个线程:主线程,GC。3.判断线程是否启动 在Java中使用isAlive()方法来判断线程是否启动,如果是true就说明线程启动,false就是没有启动。实例:public class MyThreadDemo3 implements Runnablepublic void run() for(int i=0;i10;i+) System.out.println(Thread.currentThread().getName()+运行,i=+i); public class ThreadDemo3 public static void main(String args) /创建一个线程目标对象 MyThreadDemo3 mt=new MyThreadDemo3(); /创建线程对象 Thread th1=new Thread(mt,线程1); /isAlive()方法判断线程是否启动 System.out.println(线程启动之前=+th1.isAlive(); th1.start();/启动线程 System.out.println(线程启动之后=+th1.isAlive(); for (int i = 0; i 10; i+) System.out.println(main(主线程运行) ,i=+i); System.out.println(当前程序中的for循环执行后=+th1.isAlive();4.线程的强制运行 在Java中的线程操作中,可以使用join()方法让一个线程强制运行,线程强制运行期间,其他的线程无法执行,必须等到强制执行的线程执行完毕之后,才可执行其他线程。实例:public class MyThreadDemo4 implements Runnablepublic void run() for(int i=0;i50;i+) System.out.println(Thread.currentThread().getName()+运行,i=+i); public class ThraedDemo4 public static void main(String args) MyThreadDemo4 mt=new MyThreadDemo4(); Thread th1=new Thread(mt,线程1); th1.start(); for (int i = 0; i 10) try th1.join(); catch (InterruptedException e) e.printStackTrace(); System.out.println(main线程,运行,i=+i);5.线程休眠 使用休眠可以让线程暂停执行。 在Java的线程操作中使用sleep()静态方法让线程休眠。实例:public class MyThreadDemo5 implements Runnablepublic void run() for(int i=0;i50;i+) try Thread.sleep(1000); catch (InterruptedException e) e.printStackTrace();System.out.println(Thread.currentThread().getName()+运行,i=+i);public class ThreadDemo5 public static void main(String args) MyThreadDemo5 mt=new MyThreadDemo5();Thread th=new Thread(mt,线程1);th.start();6.线程的中断 一个线程可以被另一个线程中断其操作的状态,使用Interrupt()方法完成 当一个线程运行的时候,另一个线程可以直接Interrupt()方法,中断其运行状态。实例:public class MyThreadDemo6 implements Runnablepublic void run() System.out.println(1.进入run()方法); try Thread.sleep(10000); System.out.println(2.线程完成休眠); catch (InterruptedException e) System.out.println(3.休眠被终止);return; System.out.println(4.run()方法正常执行结束);public class ThreadDemo6 public static void main(String args) MyThreadDemo6 mt=new MyThreadDemo6();Thread th=new Thread(mt,线程1);th.start();try Thread.sleep(2000); catch (InterruptedException e) System.out.println(休眠被终止);errupt();7.后台线程 在Java中,只要一个程序没有执行完成(就是还有一个线程在运行),则整个Java的进程是不会消失的,所以,此时可以设置一个后台线程,这样即使Java的进程结束,此后他程序依然会继续执行。 直接使用setDaemon()方法就可以完成上述内容。实例:public class MyThreadDemo7 implements Runnable public void run() while(true)System.out.println(Thread.currentThread().getName()+正在运行!);public class ThreadDemo7 public static void main(String args) MyThreadDemo7 mt=new MyThreadDemo7();Thread thread=new Thread(mt,线程1);/设置后台运行thread.setDaemon(true);thread.start();线程的优先级 在Java中的线程操作中,所有的线程运行前都会保持在就绪状态,那么此时,那个线程的优先级高,那个线程就有可能会先被执行。实例:public class MyThreadDemo8 implements Runnablepublic void run() for (int i = 0; i 50; i+) try Thread.sleep(500); catch (InterruptedException e) e.printStackTrace();System.out.println(Thread.currentThread().getName()+运行,i=+i); public static void main(String args) Thread th1=new Thread(new MyThreadDemo8(),线程1);Thread th2=new Thread(new MyThreadDemo8(),线程2);Thread th3=new Thread(new MyThreadDemo8(),线程3);/设置优先级setPriority()th1.setPriority(Thread.MAX_PRIORITY);/最高优先级th2.setPriority(Thread.NORM_PRIORITY);/中等优先级th3.setPriority(Thread.MIN_PRIORITY);/最低的优先级th1.start();th2.start();th3.start();看看主方法的优先级实例:public class ThraedDemo9 public static void main(String args) System.out.println(主线程的优先级是:+Thread.currentThread().getPriority();主线程的优先级的结果是“5”,数字“5”对应的就是Thread.NORM_PRIORITY这个优先级,所以主线程的优先级是中等级别。public class ThraedDemo9 public static void main(String args) System.out.println(Thread.MAX_PRIORITY:+Thread.MAX_PRIORITY); System.out.println(Thread.NORM_PRIORITY:+Thread.NORM_PRIORITY); System.out.println(Thread.MIN_PRIORITY:+Thread.MIN_PRIORITY);运行结果是: Thread.MAX_PRIORITY:10 Thread.NORM_PRIORITY:5 Thread.MIN_PRIORITY:1线程的礼让在线程的操作中,也可以使用yield()方法将一个线程的操作暂时让给其他线程执行。实例:public class MyThreadDemo10 implements Runnablepublic void run() for(int i=0;i50;i+) System.out.println(Thread.currentThread(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 沧州市中医院生殖超声检查考核
- 2025广西旅发集团广西自贸区医院管理有限公司招聘94人模拟试卷附答案详解(完整版)
- 保定市人民医院腹腔镜技能模拟训练考核
- 大学课件讲封神
- 2025年芜湖宜居投资(集团)有限公司招聘10人考前自测高频考点模拟试题及答案详解(名校卷)
- 邢台市中医院微针治疗专项技能考核
- 2025湖南邵阳市洞口县博雅学校第二期教师招聘13人模拟试卷及一套参考答案详解
- 秦皇岛市中医院特殊人群溶栓治疗考核
- 石家庄市中医院超声急诊检查考核
- 邢台市中医院正畸诊断设计能力考核
- 南京市29中2024-2025八年级上学期第一次月考物理试卷及答案
- +高++中语文《琵琶行(并序)》理解型默写+统编版高中语文必修上册
- 设备分类分级管理方法
- 梅花鹿同期发情人工输精技术规程
- 防水质保协议书范本简单模板
- 检验科降低检测报告超时率PDCA持续改进案例
- DB32T-成人危重症临床护理技术规范 第6部分:患者身体约束
- 2024-2030年中国加油站便利店行业发展趋势预判及市场前景预测研究报告
- 洗涤用品采购合同范本
- 混龄教育及带班技巧培训
- 足球知识竞赛题库90道附答案【完整版】
评论
0/150
提交评论