使用线程机制是一种建立透明的,可扩展的程序的方法。
Thread.yield() 是对线程调度器(Java线程机制的一部分,可以将CPU从一个线程转到另一个线程)的一种建议,它在声明:“我已经执行完生命周期中最重要的部分了,此刻正是切换给其他任务执行一段时间的大好时机。
可以再一个任务的内部,通过调用Thread,currentThread()来获得对驱动该任务的Thread对象的引用。”
2. 从任务中产生返回值
线程中Runnable是执行工作的独立任务,它不返回任何值。如果你希望任务在完成时能够返回一个值,那么要实现Callable接口而不是Runnable接口。
Callable是一种具有类型参数的泛型,他的类型参数表示的是从方法call()(而不是run())中返回的值,并且必须使用ExecutorService.submit()方法调用。
3. 优先级
线程的优先级将该线程的重要性传递给了调度器。尽管CPU处理现有线程集的顺序是不确定的,但是调度器将倾向于让优先权高的线程先执行。这不意味着优先权较低的线程得不到执行(优先权不会导致死锁)。优先权较低的线程仅仅是执行的频率较低。
优先级是在run()的开头部分设定的,不要在构造器中设置。 setPriority(),getpriority()。
在调整优先级的时候,只是用 MAX_PRIORITY, NORM_PRIORITY,MIN_PRIORITY。
线程
4.后台线程
所谓后台(daemon)线程,是指在程序运行的时候再后台提供一种通用服务的线程。 当所有的非后台线程结束时,程序也就终止了,同时会杀死进程中的所有后台线程。
使用 xxxx.setDaemon(true)来把线程设置为后台线程。