Java学习笔记之线程的控制
2013-05-01 20:51
190 查看
join线程:Thread提供了让一个线程等待另一个线程完成的方法----join()方法
当某个程序执行流中调用了其他线程的join()方法时,调用线程将被阻塞,直到被join()方法加入的join线程执行完为止。
join()方法的三种重载方式:
1.join():等待被join的线程执行完成。
2.join(long millis):等待被join的线程的时间最长为millis毫秒。如果在millis毫秒内被join的线程还没有执行结束,则不再等待。
3.join(long millis,int nanos):等待被join的线程的最长时间为millis毫秒加nanos毫微秒。
后台的线程:指在后台运行的,为其他线程提供服务的线程,又称守护线程或精灵线程。如JVM的垃圾回收线程。
如果前台线程都死亡,后台线程将自动死亡。
调用Thread对象的setDaemon(true)方法可讲指定线程设置成后台线程,调用该方法必须在start()方法调用之前,否则会引发IllegalThreadStateException异常。
线程睡眠:如果需要让当前正在执行的线程暂停一段时间,并进入阻塞状态,则可以通过调用Thread类的静态方法sleep()方法来实现。
sleep()方法的两种重载形式:static void sleep(long millis):让当前正在执行的线程暂停millis毫秒,并进入阻塞状态
static void sleep(long millis,int nanos):让当前正在执行的线程暂停millis毫秒加nanos毫微秒
线程让步:yield
Thread类的静态方法yield()可以暂停当前正在执行的线程,但不会阻塞该线程,而是将该线程转入就绪状态。
当某个线程调用了yield()方法暂停后,只有优先级与该线程相同或有更高优先级的处于就绪状态的线程才能获得执行的机会。
改变线程优先级:通过Thread类的setPriority(int new Priority)、getPriority()方法来设置和返回指定线程的优先级,其中setPriority()方法中的参数可以是一个整数,范围是1-10之间,也可以使用Thread类中的三个静态常量:MAX_PRIORIRY:其值为10;MIN_PRIORITY:其值为1;NORM_PRIORITY:其值为5。
main线程所创建的子线程的优先级默认都是6,不同的操作系统上的优先级不同,而且不能很好地和Java的10优先级对应,所以应该直接使用Java提供的三个静态常量来设置优先级,以保证程序的可移植性。
当某个程序执行流中调用了其他线程的join()方法时,调用线程将被阻塞,直到被join()方法加入的join线程执行完为止。
join()方法的三种重载方式:
1.join():等待被join的线程执行完成。
2.join(long millis):等待被join的线程的时间最长为millis毫秒。如果在millis毫秒内被join的线程还没有执行结束,则不再等待。
3.join(long millis,int nanos):等待被join的线程的最长时间为millis毫秒加nanos毫微秒。
后台的线程:指在后台运行的,为其他线程提供服务的线程,又称守护线程或精灵线程。如JVM的垃圾回收线程。
如果前台线程都死亡,后台线程将自动死亡。
调用Thread对象的setDaemon(true)方法可讲指定线程设置成后台线程,调用该方法必须在start()方法调用之前,否则会引发IllegalThreadStateException异常。
线程睡眠:如果需要让当前正在执行的线程暂停一段时间,并进入阻塞状态,则可以通过调用Thread类的静态方法sleep()方法来实现。
sleep()方法的两种重载形式:static void sleep(long millis):让当前正在执行的线程暂停millis毫秒,并进入阻塞状态
static void sleep(long millis,int nanos):让当前正在执行的线程暂停millis毫秒加nanos毫微秒
线程让步:yield
Thread类的静态方法yield()可以暂停当前正在执行的线程,但不会阻塞该线程,而是将该线程转入就绪状态。
当某个线程调用了yield()方法暂停后,只有优先级与该线程相同或有更高优先级的处于就绪状态的线程才能获得执行的机会。
改变线程优先级:通过Thread类的setPriority(int new Priority)、getPriority()方法来设置和返回指定线程的优先级,其中setPriority()方法中的参数可以是一个整数,范围是1-10之间,也可以使用Thread类中的三个静态常量:MAX_PRIORIRY:其值为10;MIN_PRIORITY:其值为1;NORM_PRIORITY:其值为5。
main线程所创建的子线程的优先级默认都是6,不同的操作系统上的优先级不同,而且不能很好地和Java的10优先级对应,所以应该直接使用Java提供的三个静态常量来设置优先级,以保证程序的可移植性。
相关文章推荐
- (45)Java学习笔记——多线程 / 设置线程 / 线程调度 /线程控制
- 0039 Java学习笔记-多线程-线程控制、线程组
- Android(java)学习笔记64:线程的控制
- java学习笔记1018---线程的控制
- java基础学习笔记之九--线程(1)
- java第四章学习笔记:流程控制---java世界的航行舵手
- Java学习笔记(2) :访问权限控制
- Java学习笔记:控制反转
- JAVA线程的创建(学习笔记)
- java学习笔记 之 流程控制
- 【原】Java学习笔记006 - 流程控制
- JAVA学习笔记 -- 线程
- Java线程的学习笔记
- Java学习笔记—多线程(Java线程常用方法总结)
- 【java学习笔记】线程
- [置顶] Java 多线程 学习笔记(二)停止线程的几种方法
- java学习笔记八——访问权限控制
- Java-马士兵设计模式学习笔记-观察者模式-OOD 线程 改进
- Java-J2SE学习笔记-线程-生产者消费者问题
- 【java编程思想--学习笔记(三)】访问控制-接口实现与类的访问权限