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!
"
);
}
}
查看全文
相关阅读:
随风而行(Android运动提示)
Android简单的四则随机运算
随手记(一)(六)
随手记(五)
随手记(四)
随手记(三)
随手记(二)
痛点以及需求分析
WC项目解析统计文本文件中的字符数、行数、单词数
个人项目需求分析粉日记
原文地址:https://www.cnblogs.com/hcfalan/p/1222960.html
最新文章
H5,PC网页屏幕尺寸相关整理(scrollLeft,scrollWidth,clientWidth,offsetWidth)
hammerjs wabapp h5 触屏手势一网打尽
结队项目5
结队项目4
结队项目3
结队项目2
结队项目
当前大学生的痛点, 过分的苛求追求极致效果行不行的通?(作业)
统计文本 字符数,单词数,行数 作业
个人项目分析(作业)
热门文章
Markdown 尝试
推荐一款软件(作业)
代码整合 功能总结
每日;每月消费计算操作
记账本数据库建立及界面布局设计
用户数据库建立
登录注册功能的实现
根据痛点分析制作软件
痛点分析及项目设想
Android文档次数统计
Copyright © 2011-2022 走看看