Java SE应用部分24多线程02.docx

上传人:b****6 文档编号:7988072 上传时间:2023-01-27 格式:DOCX 页数:18 大小:2.01MB
下载 相关 举报
Java SE应用部分24多线程02.docx_第1页
第1页 / 共18页
Java SE应用部分24多线程02.docx_第2页
第2页 / 共18页
Java SE应用部分24多线程02.docx_第3页
第3页 / 共18页
Java SE应用部分24多线程02.docx_第4页
第4页 / 共18页
Java SE应用部分24多线程02.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

Java SE应用部分24多线程02.docx

《Java SE应用部分24多线程02.docx》由会员分享,可在线阅读,更多相关《Java SE应用部分24多线程02.docx(18页珍藏版)》请在冰豆网上搜索。

Java SE应用部分24多线程02.docx

JavaSE应用部分24多线程02

JavaSE应用部分-24.多线程(02)

 

上季内容回顾:

多线程的两种实现方式:

·Thread

·Runnable

最终都要求使用Thread类中start()方法启动多线程

本季主要知识点:

线程的控制方法

线程的状态转换

所有的线程实际上是同时启动的,只是抢占CPU的资源的顺序不同。

线程名称的设置及取得

在线程中所有的操作类都是在一个类——Thread类.

从提供的方法上来看:

多线程中提供了getName和setName则应该可以推断出在Thread类中必然有一个name属性。

ThreadDemo01:

运行结果:

在程序中,我们没有设置Thread-0名称哈,下面我们设置其名称

再来验证下效果

main线程是由对象进行调用的,所以是由主线程控制

从以上题目我们应该知道,我们之前所运行的所有的JAVA程序都是在线程上运行的。

java类名称-->启动JVM的进程

里面的main方法实际上就是一个在JVM进程上划分的线程。

如果没有为线程设置名字,则线程的默认名字为Thread-x(x:

表示数字,从0开始)

如果计数是往上增1,则所有对象肯定是共享同一个变量,则此变量肯定是static类型的。

看下效果:

问题:

问在JAVA程序中,每一次运行至少启动几个线程呢?

·主线程(main)

·垃圾收集线程(GC)

刚才设置名字的时候是在Thread类的对象创建完之后在设置名字的,可以在构造方法处设置线程名称:

publicThread(Runnabletarget,Stringname);

结果出来了

线程控制基本方法

方法名称以isXxx开头的,一般都是返回boolean类型。

激活线程

线程是通过start()方法启动的,在线程启动之前肯定是死的,但是线程启动之后再判断呢?

此程序更能验证一点——多线程的程序的输出是不固定的,谁先谁后都应该充分考虑到。

设置后台线程

Linux下可以很清楚的看见有后台线程。

如果不设置后台线程会怎么样,看一下正常启动线程

程序进入死循环

现在设置程序后台运行

我们发现程序运行一段时间后自己跑后台执行了,程序在前台看不见了

线程的休眠

如果说现在不使用Thread类中提供好的sleep方法,那么如何可以让线程暂时停止运行呢?

发现程序运行有点快,我们加个for空循环

现在可以清楚看见程序在一个个运行了

多线程类中提供专门的休眠方法——sleep

publicstaticvoidsleep(longmillis)-->休眠毫秒

        throwsInterruptedException-->抛出了中断异常

程序达到了相同的效果哈~三个线程同一时间跳出来哈~这就是一个多线程休眠的操作

线程的强制运行

publicfinalvoidjoin()-->证明此方法不能被子类覆写

             throwsInterruptedException

我们看一下这个t.txt文件哈~当i值为100时,强制执行Thread-0线程

总结

1、取得当前线程:

publicstaticThreadcurrentThread();

2、取得线程的名字:

publicStringgetName();

3、设置线程的名字:

publicvoidsetName(Stringname)

在构造方法上也有支持:

|-publicThread(Stringname);直接在构造方法处设置线程的名字

|-publicThread(Runnabletarget,Stringname)

4、JAVA程序启动时至少启动两个线程

·main:

主方法

·gc:

垃圾收集

5、线程的休眠

如果不用Thread类中提供的方法,则可以通过空循环的方式完成延迟操作

publicstaticvoidsleep(毫秒)throwsInterruptedException

6、线程的强制运行

publicfinalvoidjoin()throwsInterrtupedException

#############################################

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1