一个程序同时执行多个任务,通常每一个任务称为一个线程。可以同时运行一个以上线程的程序称为多线程程序。
多线程与多进程的区别在于每个进程拥有自己的一整套变量,而线程则共享数据。与进程相比较,线程更加轻量级,创撤销一个线程比启动新进程的开销要小得多
1.java.lang.Thread 1.0:
static void sleep(long millis)
线程休眠给定的毫秒数
2.使用线程给其他任务提供机会:
在这里可以使用Runnable接口来定义一个线程,将实现代码放在run方法中,
Runnable是一个函数式接口,可以使用lambda表达式建立一个实例:
Runnable r = () -> {task code};,
再由Runnable创建一个Thread对象:
Thread t = new Thread(r);,
启动线程:
t.strat();
也可以通过构建一个Thread类的子类定义一个线程,例如:
Class MyThread extends Thread
{
public void run()
{
task code
}
}
然后构造一个子类的对象,并调用start方法。不过这种方法不再推荐。应该将要并行运行的任务与运行机制解耦合
不要调用Thread类或者Runnable对象的run方法。直接调用run方法,只会执行同一个线程中的任务,而不会启动新线程。应该调用Thread.start方法。这个方法将创建一个执行run方法的新线程
2.1java.lang.Thread 1.0:
Thread(Runnable target)
构造一个新线程,用于调用目标的run()方法
void start()
启动这个线程,将引发调用run()方法。这个方法将立即返回,并且新线程将并发运行
void run()
调用关联Runnable的run方法
2.2java.lang.Runnable 1.0:
void run()
必须覆盖这个方法,并在这个方法里提供所有执行的任务指令