一:线程的状态图:
线程是具有生命周期的,线程的“一生”如下:
◆线程从new开始,进入到创建状态
就绪状态,但这是并一定马上执行,这时要看系统的资源分配情况
运行。进行到这里就有很多种情况发生:
(1)如果时间片用完或者yield一下,则又进入到了就绪状态;
(2)正常情况下,线程的运行体结束,即线程的run方法结束后,线程结束
(3)运行的时候,其他的线程可以join进来,你自己也可以sleep一会,或者你需要等待输入数据,这三种情况会使进程进入到阻塞状态; ◆如果进程由于图中的三种原因而进入到了阻塞状态后,则又可以因为“睡醒了”,输入结束了,join进来的线程执行结束了等多种原因进入到就绪状态。注意:阻塞之后不能直接进入到运行状态,而是就绪状态。打个比方:你在火车站排队买票,你已经进入到运行(买票)状态,中途你睡着了(阻塞了),一个小时后,你睡醒了,这时你只能让队伍的后面继续排队,等待买票,而不是醒了直接去买票。(很可能挨揍哦)
二:线程相关的常用类
◆TimerTask:定时器任务。他实现了Runnable接口,因此继承自它的类应重写run方法表示计时任务。
◆Timer:定时器、调度器、计时器。可以用schedule(任务对象,暂停的秒数,任务执行的频率);方法来安排任务的执行。
三:具体应用:动态欢迎界面的制作,就可以运用线程以及线程常用类的知识。
TimerTask计时任务去做,每隔一段时间(任务的执行频率),让显示图片的Lable空间一个一个的显示图片,最后关闭定时器,关闭欢迎窗口,进入到主界面(程序中的主界面为控制台)。
●步骤:
1:创建Logo类,继承JFrame,添加构造方法,添加main方法,在main方法中创建Logo对象,以实现程序一运行就出现窗体
2:添加基本的信息(一般放在构造方法的最后面)
|
3:添加基础面板,设置基础面板的布局,定义展示照片的Lable标签控件
|
4:添加控件到基础面板上,添加基础面板到窗体上
|
5:编写计时任务(内部类的形式)extends Timertask,这里的计时任务是指图片一个接一个的展示。
|
6:添加线程,完成功能
|
至此,欢迎界面做好了,运行的资源文件及源码,感兴趣的话可以试一试。运行起来不是很美观,蓝蓝 的窗体很难看,这时我们在第3步与第4步之间添加让窗口透明化的两条语句,是界面看起来更美观
|
这一次看起来美观了不少吧。。。
线程的基础知识在这里差不多都有介绍,可能具体的应用还得我们自己去实践,才会有更深的领悟。(啊,多么痛的领悟。)
转载于:https://blog.51cto.com/cinderella7/1266798