一:生活中的线程
在生活中,我们总是追求时间的最大利用效率,因此我们会在一个时间段内做几件不同的事情,例如我们在用全自动洗衣机洗衣服的同时去烧水,烧水的同时我们去扫地,扫地的同时我们再听着音乐。
像这样一连串同时发生的事情,我们将这其中每一件事情都叫做一个线程。
再拿电脑举例子,我们打开电脑的任务管理器之后能看到有很多程序正在后台运行,他们并没有说是在运行其中一个应用的时候其他应用就没有运行,而是一种并行运行的,这就是电脑中的多个线程。
二:JAVA中的线程
java中,当我们需要多个任务同时进行的时候就需要用到线程。在最简易的画图板中,倘若我们要画复杂的分形图形,与此同时我们又想再画一个别的图形,但是由于分形画的比较慢,所以我们需要在这里使用线程,使得我们在画分形的时候同时可以利用画笔画其他的图形。
线程定义
线程在Java中是一个父类,若要让这个类变成线程,则需要继承父类Thread
关键字:Thread
定义: public class extends Thread{
//方法
}
线程方法重写
当我们打开Thread的函数体中我们会发现有个run方法,这是线程的执行函数,我们操作线程即需要编写线程中的run方法。
public void run(){
//方法体
}
//此后也可以写其他方法,通过调用方法来实现
线程的使用
当我们把几个线程写好之后,我们在主函数中创建线程对象然后调用start()方法让线程开始。
注意:
1:使用线程是调用线程中的start方法开始线程。
2:线程只能开始一次,即只能进行一次start的调用。
三:实例
第一个线程,每休眠一段时间后输出Hello World!
public class Helloworld extends Thread{
public void run(){
while(true){
System.out.println("Hello World!");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
第二个线程,每休眠一段时间输出Hello Java!
public class HelloJava extends Thread{
public void run(){
while(true){
System.out.println("Hello Java!");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
主界面,创造两个线程对象并调用start方法开始线程
在这里插入代码片public class Mainer {
public void print(){
HelloJava hejava=new HelloJava();
hejava.start();
Helloworld heworld=new Helloworld();
heworld.start();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Mainer mainer=new Mainer();
mainer.print();
}
}
可以看到输出框内每隔相同的时间同时输出Hello Java!和Hello World!