一、什么时候使用线程:
1、一个程序中需要同时完成多个任务时,我们可以将每一个任务定义为一个线程,使他们可以一同工作;
2.某项工作单线程可以完成,但是多线程更快时, 也可以使用多线程,比如文件下载。
二、多线程运行的并发原理:
多个任务“同时”执行只是我们感官上的效果,实际上线程是并发运行的,而不是同时运行。OS将时间片尽可能均匀的分配给每一个线程,获取时间片的线程被cpu运行,此时其他线程处于等待状态。
三、创建线程
1、继承Thread,并且重写run()方法
写法如下:
class MyThread extends Thread{
public void run(){
任务代码块;
}
}
这种方式创建线程时将线程与任务捆绑,导致两者之间耦合度很高,不利于线程的重用。并且,由于继承的单一性,这个类不能再继承其他的类,在实际开发中会有诸多不便。
**
2、实现Runnable接口,线程和任务分别定义。
**
写法如下:
//首先实现Runnable接口
class MyRunnable implements Runnable{
publi void run((){
任务代码块;
}
}
//定义任务和线程,并将任务交给线程,然后启动
MyRunnable r1 = new MyRunnable();//将任务实例化
Thread t1 = new Thread(r1);//实例化一个线程,将任务作为参数传给它
t1.start();//启动线程