java多线程:3、Java对多线程的支持1

版权声明:本文为博主原创文章,不得随意转载,转载请注明出处!!! https://blog.csdn.net/YuDBL/article/details/85722120

声明:本教程不收取任何费用,欢迎转载,尊重作者劳动成果,不得用于商业用途,侵权必究!!!

文章目录

1、Java在语言级提供了对多线程程序设计的支持。

2、实现多线程程序的两种方式

3、后台线程

4、yield方法

5、线程优先级


1、Java在语言级提供了对多线程程序设计的支持。

通常线程只是在系统层被实现,我们需要系统给我们提供的特定的编程接口去实现线程

Java是第一个在语言级支持多线程程序设计的编程语言。

2、实现多线程程序的两种方式

    1)从Thread类继承;

    2)实现Runnable接口。

Thread类是java.lang包中的一个类( 注:从api你可以发现Thread类已实现了Runnable接口。)

一个Thread是一个程序当中的执行线程,也就是说一个Thread类的对象就代表了我们进程当中的一个线程,

java虚拟机(JVM)允许一个应用程序可以拥有多个并发运行的线程。

我们的main方法,它也是在一个线程当中被执行的。当一个java虚拟机启动的时候,通常有一个

单一的非后台线程。也就是说当我们的java虚拟机启动的时候,那么就会有一个线程它负责执行

我们的main方法,我们可以打印main方法所在线程的名字看看。

调用start方法启动线程,然后java虚拟机就会调用此线程的run方法,于是里面的代码就会被执行。

我们可以把这个run方法理解为线程的入口函数。而main方法可以理解为程序的入口函数。

打印的线程名字这个Thread-1是Java虚拟机给分配的名字

3、后台线程

mt.setDaemon(true);//在线程启动之前,标记为后台线程

mt.start();

Main方法所在的线程是一个非后台的线程

我们看一下当main方法所在的线程退出的时候,那么我们这个后台线程是否也跟着退出?

刚开始的时候是main方法所在线程和后台线程mt在交替运行,

当我们main方法所在线程终止的时候,那么这个后台线程mt也就跟着在后面终止了。

4、yield方法

一个正在执行的线程可以放弃它执行的权利,让另外一个线程开始运行,

我们可以使用方法yield方法,

我们可以看到每当我们打印mt线程名以后,因为调用了yield方法,让当前线程暂停了,

于是线程发生切换,轮到main方法所在的线程开始执行,当main方法所在线程运行到一段时间之后,

线程又切换到mt线程,当打印mt线程名以后,因为调用了yield方法,让当前线程暂停了,

线程又切换到main方法所在线程......

5、线程优先级

设置线程优先级,它的参数是一个整形。最小为1,缺省为5,最高为10

并不一定要在线程start启动之前进行设置,我们在线程启动之后也可以设置修改线程的优先级。

在java当中如果某个线程优先级较高,那么他将始终获得优先运行的机会。即使设置了yield方法,

它也始终会获得优先运行的机会。

输出观察:

一般有可能在我们强制终止程序的时候,有可能会发现优先级较低的线程运行几次。

猜你喜欢

转载自blog.csdn.net/YuDBL/article/details/85722120
今日推荐