多线程

线程的两种启动方式

方法一:直接继承Thread类

step1:创建一个子类,来继承Thread类

step2:重写run()方法,因为这是线程体:当CPU调度执行该线程的时候,就要执行的是run()方法中的代码。

step3:创建该类的对象,表示一个线程,调用start()进而启动这个线程。意味着该线程一切准备就绪,随时可以被CPU调度执行。但是CPU是否立刻执行?不一定,要看CPU自己。

方法二:实现Runnable接口

step1:创建一个实现类,实现Runnable接口

step2:重写run()方法

step3:先创建该实现类对象:mt,根据实现类对象再创建Thread对象,然后启动。

Thread类的构造方法:

Thread();//创建一个线程对象,执行run()。线程的默认名:Thread-0,1,2...

Thread(Runnable target);//创建一个线程对象,指明了target,执行的run是Runnable接口中。

Thread(String name);//创建一个线程,并给起个名字

Thread(Runnable target,String name);

两种线程创建方式的对比

使用Runnable接口:

还可以从其他类继承;

保持程序风格的一致

直接继承Thread类

不能再继承其他的类

编写简单,可以直接操纵线程

使用Runnable接口的方式创建线程时可以为相同程序代码的多个线程提供共享的数据

线程的常用方法

static Thread currentThread() ;//返回对当前正在执行的线程对象的引用。

setName()设置线程名称。系统默认的:Thread-0,Thread-1,Thread-2......

getName() 返回此线程的名称。

long getId()     该Id值,由系统自动分配,程序员无法手动操作。

线程的优先级:priority 最大:10 一般:5 最小:1

int getPriority()

返回此线程的优先级

   void setPriority(int newPriority)

更改此线程的优先级。

static void sleep(long millis)

静态方法,应该由类直接调用,对象也可以调用,有坑:不是谁调用就谁睡,而是当前正在执行的线程进入睡眠了。和谁调用无关

join()

等待这个线程终止,在执行其他的线程

setDaemon();

为前台线程服务,如果所有的前台线程都结束了,那么守护线程也就结束了。

线程的状态:

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容