Java基础——线程总结
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中的一个/全部等待线程。 |
四、辨析wait()与sleep()
之所以对这两个方法辨析,它们有个共同点——暂停线程的运行。但要说起它们的不同点。那还是挺多的。
不同点:
(1)Wait()是Object对象的方法;而Sleep(int sleepTime)是Thead()线程的方法。
(2)Wait()运行后,当前对象的锁就会被释放;而Sleep(int)运行后,锁仍然在其手中。
(3)Wait()不须要指定停留时间,须要notify()方法或notifyAll()方法将其唤醒;而Sleep(int),当中int指定睡眠的毫秒数,仅仅有在超过这个时间后。醒过来,当再次获得时间片之后,才干继续运行。