java线程小结

2014-11-24 07:56:19 · 作者: · 浏览: 0

线程的状态:

新建状态、就绪状态、运行状态、阻塞状态、终止状态
线程有三种可能:

1、时间片执行时间表用完它将重新回到“就绪状态”,等等待新的调度运行机会
2、线程的run方法代码执行完毕将进入到“终止状态”
3、线程可能因某些事件的发生或者等待某个资源而进入到“阻塞状态”。阻塞条件解除后线程将进入“就绪状态”
如下几种线程会放弃CUP:
1、当前时间片用完
2、线程在执行时调用了yield()或sleep()方法主动放弃
3、进行I/O访问,等待用户输入,导致纯种阻塞;或者为等候一个条件变量,线程调用wait()方法。
4、有高优先级的线程参与调度。
Thread类的方法


方法 功能
CurrentThread() 返回当前运行的Thread对象
Start() 启动线程
Run() 由调试程序调用,当run()方返回时,该线程停止
Stop() 使调用它的线程立即停止执行
Sleep(int n) 使线程睡眠n毫秒,n 毫秒后,线程可以再镒运行
Suspend() 使线程挂起,暂停运行Not Runable
Resume() 恢复挂起的线程,使其处可运行状态Runnable
Yield() 将CUP控制权主动移交到下一个可运行线程
setName(String ); 赋予线程一个名字
getName() 取得由setName()方法设置的线程序名字的字符
getPriority() 返回线程优先级
setPriority() 设置线程优先级
Join() 当前线程等待调用该方法的线程结束后,再往下执行
setDamemon(boolean) 设置该线程是daemon线程还是用户线程,Daemon线程也称服务线程,通常编成无限循环,在后台持续运行


Thread实例:
[html]
import java.util.*;
public class TimePrinter extends Thread{

int pauseTime;//中间休息时间
String name;//各称标识
public TimePrinter(int x, String n){
pauseTime =x;
name = n;
}
public void run(){
while(true){
try{
System.out.println(name+":"+new Date(System.currentTimeMillis()));
Thread.sleep(pauseTime);//线程睡眠一段时间
}catch(Exception e){
System.out.println(e);
}
}
}
public static void main(String args[]){
TimePrinter tp1 = new TimePrinter(1000,"Fast Guy");
tp1.start();
TimePrinter tp2 = new TimePrinter(3000,"Slow Guy");
tp2.start();
}

}


摘自 myserverthepeople的专栏