当前位置: 首页 > news >正文

(java)关于Thread的挂起和恢复

今天在做 Thread的测试,主要目的就是了解下线程的挂起和恢复。

差了很多资料,一直用的是wait()和notify()函数,结果总是出错,后来又找了些东西看,发现java已经取消的两个函数
resume(); //恢复线程
suspend(); //挂起线程
java之所以取消这两个函数,是因为容易照成死锁,但是对于很多项目来说,挂起一个进程后,可以节约cpu的资源,是
一种很好的线程执行方法。

下面的代码演示的就是一个对队列进行监控的线程,当有向队列插入的请求时候,线程恢复执行操作,当队列为空时,挂起线程节约cpu资源。
可以利用的情况:在web 设计中,经常会遇到后台的监控处理,可以用下面的监控程序进行监控,有信息来则把处理该信息的线程恢复,如果没有信息请求,则挂起,减轻服务器负担。

源代码如下:

import java.util.*;
public class JudgeThread extends Thread
{
private String str;
private Queue<String> queue = new LinkedList<String>();
public void Insert(String str) //向队列插入时候进行线程恢复,达到监控效果.
{
queue.offer(str);
this.resume();
}
public void run()
{
try{
while(true)
{
while((str = queue.poll())!=null)
{
System.out.println(str); //也可以进行其他操作!
}
//队列为空,这里进行挂起线程操作
System.out.println("挂起");
this.suspend();

}
}catch(Exception e)
{
System.out.println("JudgeThread Error");
}
}
public static void main(String args[]) throws Exception
{
JudgeThread jt = new JudgeThread();
jt.start();
jt.Insert("hello");
Thread.sleep(2000);
for(int i = 0;i<10;i++)
jt.Insert("world");
Thread.sleep(4000);
for(int i = 0;i<5;i++)
jt.Insert("hello2");
Thread.sleep(5000);
jt.Insert("world2");
}
}

相关文章:

  • 期待变化
  • 与IT行业相关从事企业现状
  • 让自己的职业生涯走在正确的道路上,读《程序员职场第一课》有感
  • ExtJS与JQuery的对比
  • Spring轻量吗?轻量个屁
  • 最近在做一个基于SaaS架构的B2B2C项目
  • LGame框架问题汇总,有疑问请发至此文
  • Flex、JQuery、ExtJS 的选择
  • 国内以项目为主的软件公司核心问题
  • 高龄程序员 求职之惑,读LEO程序员求职第一书有感
  • 软件架构经验总结
  • 创建自己的业务流程管理框架
  • 创业有感
  • 《爬梯子的故事》
  • 小故事:金钱的是是非非
  • CSS 专业技巧
  • es6要点
  • HTTP那些事
  • JAVA SE 6 GC调优笔记
  • JS变量作用域
  • Koa2 之文件上传下载
  • mysql中InnoDB引擎中页的概念
  • React Transition Group -- Transition 组件
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • vue 配置sass、scss全局变量
  • 成为一名优秀的Developer的书单
  • 飞驰在Mesos的涡轮引擎上
  • 复习Javascript专题(四):js中的深浅拷贝
  • 关于字符编码你应该知道的事情
  • 聊聊flink的TableFactory
  • 每天一个设计模式之命令模式
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 前端性能优化--懒加载和预加载
  • 人脸识别最新开发经验demo
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 算法-插入排序
  • 微信开源mars源码分析1—上层samples分析
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​iOS安全加固方法及实现
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • (1)虚拟机的安装与使用,linux系统安装
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (arch)linux 转换文件编码格式
  • (python)数据结构---字典
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (十六)Flask之蓝图
  • .bashrc在哪里,alias妙用
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET NPOI导出Excel详解
  • .net Signalr 使用笔记