什么是线程?
线程(Thread)是一个任务从头到尾的执行流,可以把线程想象成程序中语句的顺序执行过程。
一个程序往往需要同时完成多个任务,比如浏览器既要显示页面,还要同时下载图片,这种并发执行多个任务的技术被称为多任务(multitasking)。线程提供了运行一个任务的机制,程序要并发执行多个任务就需要启动多个线程。
什么是任务?
Java中一个任务(Task)就是实现了Runnable接口的一个实例, 这个接口只包含一个run方法。
定义一个任务类:
1: public class TaskClass implements Runnable
2: {
3: public TaskClass()
4: {
5: }
6:
7: public void run()
8: {
9: ...
10: }
11: }
任务必须在线程中执行,线程为任务的执行提供了方便:
1: TaskClass task = new TaskClass();
2: Thread thread = new Thread(task);
3: thread.start();
注意: Thread类本身也实现了Runnable接口,可以通过定义一个Thread的扩展类,并实现run方法,然后在客户端中直接调用start方法来启动线程。但并不推荐通过这种方式来实现多任务,因为这把任务和运行任务的机制混在一起,反而使结构不清晰。
Thread类及其方法
yield()方法:此方法使线程让出CPU,让线程调度程序选择其他线程运行
sleep(long mills)方法:此方法也能使线程让出CPU并进入睡眠状态,休眠指定的时间后该线程会恢复执行。
join()方法:此方法可以强制一个线程等待另一个线程执行完成。
setPriority(int p)方法:此方法可以设置线程的优先级,优先级范围是从1-10的数字,JVM会选择当前最高优先级的线程执行。