概述:
在操作系统中,每一个独立执行的程序都可称之为一个进程,多线程是指一个应用程序中有多条并发执行的线索,每一条线索叫做一个线程。同时JAVA是支持单继承的,也就是仅仅可以有一个父类。
在JAVA中有俩种方式来创建多线程,分别是Thread 和Runnable,但是一个是类,一个是接口,也就自然而然的一个需要继承,另一个仅仅实现就可以啦,所以在java中常用的为runnable。
在很多的线程中都是需要共享同一个资源的,比如我们的买票系统,由于客户量大,所以我们会想到多线程,但是不是仅仅创建多线程就可以了,这时候还要保证创造一个对象,然后开启多个线程去运行同一个售票对象。
Runnable和Thread类的好处:
1、适合多个相同的程序代码的线程去处理同一个资源的情况。
2、避免由于java的单继承带来的局限性
线程的生命周期:
图上很清晰的看到了线程的状态:新建状态、就绪状态、运行状态、阻塞状态、死亡状态
线程的优先级和调度
首先是可以在程序中设置优先级,通过setPriority。还有其他的,不在赘述。
当线程中出现了以下的情况,就会终止线程的运行:
1、 线程中调用了yield()方法,让出了对CPU的占有权。其中代码 Thread.yield()是对线程做出了让步,可以让其他的线程来执行。
2、 线程中调用sleep()方法,让线程睡觉。
3、 更高的优先级的线程出现
4、 由于IO操作而受阻
5、 线程调用join()方法的时候,调用的线程将被阻塞,直到join方法执行完后才可以运行。
公司的一位同事有一本黑马的java的书,在没事的时候看书,敲代码,从基础做起。