Java基础——线程总结
线程:一个程序里不同的执行路径。
两种方法创建线程:
第一种
(1)定义具体功能类实现Runnable接口,可以多次调用而实现数据共享
(2)Thread myThread = new Thread(…) //参数为Runnable接口类型
(3)Runnable中只有一个方法
public void run(){……} //用以定义线程运行体
第二种
(1)定义一个Thread的子类并重写run()方法
class MyThread extends Thread { public void run(){……} }
(2)生成该类的对象
MyThread myThread = new MyThread (…)
方法 |
功能 |
bool isAlive(myThread Thread) |
判断线程是否还“活”着,即线程是否还未终止。 |
int getPririty() |
获得线程的优先级数值 |
void setPriority(int NewPriority) |
设置线程的优先级数值 |
Thread.sleep(int sleepTime) |
指定当前线程的睡眠时间(单位:毫秒) |
void join() |
将当前线程与上一主线程合并,即A线程的a()方法调用了B线程,则让B线程结束,再恢复A线程继续执行。 |
void yield() |
让出CPU,当前线程进入就绪队列等待调度。 |
void wait() |
当前线程进入对象的wait pool。 |
void notify()/void notifyAll() |
唤醒对象的wait pool中的一个/所有等待线程。 |
之所以对这两个方法辨析,它们有个共同点——暂停线程的执行。但要说起它们的不同点,那还是挺多的。
不同点:
(1)Wait()是Object对象的方法;而Sleep(int sleepTime)是Thead()线程的方法。
(2)Wait()执行后,当前对象的锁就会被释放;而Sleep(int)执行后,锁仍然在其手中。
(3)Wait()不需要指定停留时间,需要notify()方法或notifyAll()方法将其唤醒;而Sleep(int),其中int指定睡眠的毫秒数,只有在超过这个时间后,醒过来,当再次获得时间片之后,才能继续执行。
原文:http://blog.csdn.net/wangqingbo0829/article/details/46595777