当一个线程A使用一个synchronized修饰的方法时,其他线程想使用这个方法时就必须等待,直到线程A使用完该方法 (除非线程A使用
wait主动让出CPU资源).
如果main方法中没有创建其他的线程,那么当main方法执行完最后一个语句,即main方法返回时,JVM就会结束Java应用程序。
参数a的单位是毫秒,确定计时器每隔a 毫秒"震铃"一次,参数b是计时器的监视器。
当JVM将CPU使用权切换给线程时,如果线程是Thread的子类创建的,该类中的run方法就立刻执行。
void kill(){die=true}
线程状态—线程的生命周期
程序中的所有用户线程都已结束运行时,即使守护线程的run方法中还有需要执行的语句,守护线程也立刻结束运行。
用Thread类或子类创建线程对象 .
Java多线程程序设计
当震铃事件发生时,监视器就会监视到这个事件,就会执行接口ActionListener中的方法:
void kill(){die=true}
挂起 所谓挂起一个线程就是让线程暂时让出CPU的使用权限,暂时停止执行,但停止执行的持续时间不确定,因此不能使用sleep方法
暂停线程。
方法可以将自己设置成一个守护(Daemon)线程,线程必须在运行之前设置自己是否是守护线程 .
Java应用程序总是从主类的main方法开始执行。
用第二种方法创建线程时,同一个实现Runable接口的对象可能创建多个线程
程序包含图形用户界面(GUI)时,Java虚拟机在运行应用程序时会自动启动更多的线程,其中有两个重要的线程:
一
一
.Java
.Java
中
中
的
的
线
线
程
程
进
进
程
程
是
是
程
程
序
序
的
的
一
一
次
次
动
动
态
态
执
执
行
行
过
过
程
程
,
,
它
它
对
对
应
应
了
了
从
从
代
代
码
码
加
加
载
载
、
、
执
执
行
行
至
至
执
执
行
行
完
完
毕
毕
的
的
一
一
个
个
完
完
整
整
过
过
程
程
,
,
这
这
个
个
过
过
程
程
也
也
是
是
进
进
程
程
本
本
身
身
从
从
产
产
生
生
、
、
发
发
展
展
至
至
消
消
亡
亡
的
的
过
过
程
程
。
。
线
线
程
程
是
是
比
比
进
进
程
程
更
更
小
小
的
的
执
执
行
行
单
单
位
位
,
,
一
一
个
个
进
进
程
程
在
在
其
其
执
执
行
行
过
过
程
程
中
中
,
,
可
可
以
以
产
产
生
生
多
多
个
个
线
线
程
程
,
,
形
形
成
成
多
多
条
条
执
执
行
行
线
线
索
索
,
,
每
每
条
条
线
线
索
索
,
,
即
即
每
每
个
个
线
线
程
程
也
也
有
有
它
它
自
自
身
身
的
的
产
产
生
生
、
、
存
存
在
在
和
和
消
消
亡
亡
的
的
过
过
程
程
,
,
也
也
是
是
一
一
个
个
动
动
态
态
的
的
概
概
念
念
。
。
Java
Java
的
的
多
多
线
线
程
程
就
就
是
是
在
在
操
操
作
作
系
系
统
统
每
每
次
次
分
分
时
时
给
给
Java
Java
程
程
序
序
一
一
个
个
时
时
间
间
片
片
的
的
CPU
CPU
时
时
间
间
内
内
,
,
在
在
若
若
干
干
个
个
独
独
立
立
的
的
可
可
控
控
制
制
的
的
线
线
程
程
之
之
间
间
切
切
换
换
。
。
评论0
最新资源