学习JAVA--线程1

来源:互联网 发布:看网络直播用什么软件好 编辑:程序博客网 时间:2024/06/14 08:30
1.基础概念

进程:系统从程序入口开始,按语句的顺序(包括顺序,分支,循环)完成,从出口退出,同时整个程序结束。一个进程既包括其索要执行的指令,也包括执行指令所需要的任何系统资源。

线程:进程执行过程中产生的多条执行线索,是比进程单位更小的执行单位。一个进程可以有多个线程,所谓的多线程。多线程解决了多部分代码同时运行的问题,线程太多又会导致效率低下。多个线程实质是CUP高速随机切换,而不是同时进行的。

2.如何创建线程:

方法一: 定义一个类继承Thread类;

重写run方法。PS:如果直接new一个Thrand类,得到的里面的run方法,并不是我们要的执行的任务。

创建Thread的子类对象。

调用start方法启动线程。

方法二:定义一个类实现Runnable接口;

覆盖接口中的run方法,封装自己的线程任务代码;

通过Thread类创建线程对象,将Runnable的接口的子类对象Thread类的构造函数的参数进行传递。PS:因为线程的任务都封装在接口Runnable 的子类对象的run方法中,所以线程在创建时就要明确要运行的任务。

调用线程的start的方法开启线程。

好处: 把线程的任务单独封装,从线程的子类中单独分离出来; 而且避免了JAVA单继承的局限性,还可以继承其他类。

所以第二种方法常用一些。

3.start(),run()方法的区别:

Start:用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到spu时间片,就开始执行run()方法,这里方法run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程随即终止。Run:run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码,这样就没有达到写线程的目的。总结:调用start方法方可启动线程,而run方法只是thread的一个普通方法调用,还是在主线程里执行。

3.成员变量,静态方法看左边;非静态方法:编译看左边,运行看右边


0 0