zoukankan
html css js c++ java
Java多线程-一个简单的线程,实现挂起和恢复的功能
主程式代码:
public
class
MainApp
{
public
static
void
main(String[] args)
{
try
{
MySprite dog
=
new
MySprite(
"
狗狗
"
);
MySprite cat
=
new
MySprite(
"
喵喵
"
);
MySprite pig
=
new
MySprite(
"
猪猪
"
);
System.out.println(
"
--- start sprites
"
);
dog.start();
cat.start();
pig.start();
Thread.sleep(
500
);
System.out.println(
"
--- suspend dog
"
);
dog.suspend();
System.out.println(
"
--- main thread do something
"
);
Thread.sleep(
500
);
System.out.println(
"
--- resume dog
"
);
dog.resume();
Thread.sleep(
500
);
System.out.println(
"
--- end dog
"
);
dog.stop();
System.out.println(
"
--- main thread do something
"
);
Thread.sleep(
500
);
System.out.println(
"
--- end other sprites
"
);
cat.stop();
pig.stop();
Thread.sleep(
100
);
System.out.println(
"
--- exit programe.
"
);
}
catch
(InterruptedException e)
{
e.printStackTrace();
}
}
}
线程实现
public
class
MySprite
implements
Runnable
{
/**/
/*
* 线程用变量
*/
private
boolean
running
=
false
;
private
boolean
waiting
=
false
;
private
Thread thread;
/**/
/*
* Business 变量
*/
private
String name;
public
MySprite(String name)
{
this
.name
=
name;
this
.thread
=
new
Thread(
this
);
}
/** */
/**
* 启动线程
*/
public
void
start()
{
running
=
true
;
thread.start();
}
/** */
/**
* 挂起线程
*/
public
void
suspend()
{
if
(waiting)
{
//
是挂起状态则直接返回
return
;
}
synchronized
(
this
)
{
this
.waiting
=
true
;
}
}
/** */
/**
* 恢复线程
*/
public
void
resume()
{
if
(
!
waiting)
{
//
没有挂起则直接返回
return
;
}
synchronized
(
this
)
{
this
.waiting
=
false
;
this
.notifyAll();
}
}
/** */
/**
* 停止线程
*/
public
void
stop()
{
if
(
!
running)
{
//
没有运行则直接返回
return
;
}
synchronized
(
this
)
{
running
=
false
;
}
}
public
void
run()
{
for
(;;)
{
try
{
//
线程挂起和退出处理
synchronized
(
this
)
{
if
(
!
running)
{
break
;
}
if
(waiting)
{
this
.wait();
}
}
//
应该做的事情
cry();
//
进入等待状态
Thread.sleep(
50
);
}
catch
(InterruptedException e)
{
e.printStackTrace();
}
}
}
private
void
cry()
{
System.out.println(name
+
"
:woo!
"
);
}
}
查看全文
相关阅读:
IMWebConf 2017 官网彩蛋解谜
解决SVG animation 在IE中不起作用
百度大搜和度秘面经
浅谈JavaScript原型与原型链
听说2017你想写前端?
如何制作icon-font小图标
HTML5 CSS3 诱人的实例 :模仿优酷视频截图功能
javaweb action无法跳转、表单无法跳转的解决方法
hadoop备战:yarn框架的搭建(mapreduce2)
liferay 指定默认首页
原文地址:https://www.cnblogs.com/hcfalan/p/1222960.html
最新文章
2018-11-1-Windows-Community-Toolkit-3.0-新功能
2018-11-1-Windows-Community-Toolkit-3.0-新功能
2019-1-20-VisualStudio-安装-Python-开发
2019-1-20-VisualStudio-安装-Python-开发
2018-8-10-win10-uwp-进度条-WaveProgressControl
2018-8-10-win10-uwp-进度条-WaveProgressControl
2018-8-10-WPF-修改图片颜色
2018-8-10-WPF-修改图片颜色
PDOStatement::fetchColumn
PDOStatement::fetchAll
热门文章
PDOStatement::fetch
PDOStatement::execute
PDOStatement::errorInfo
抓出必须创建索引的列
centos 安装memcache服务后memcahce本机连接Permission
memcached介绍
媒体查询@media的使用
JQuery使用总结
ionic3 教程(五)基本的网络请求
20170822 前端开发日报
Copyright © 2011-2022 走看看