package com.jaykid.hsbc.monitoring.service;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class InputDeamon extends Thread {
MonitoringService MonitoringService;
public InputDeamon() {
MonitoringService = new MonitoringServiceImpl();
MonitoringService.init();
}
@Override
public void run() {
String input = "";
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
while (!("end".equalsIgnoreCase(input))) {
try {
input = bufferedReader.readLine();
// System.out.println(input);
parseInput(input);
} catch (IOException e) {
e.printStackTrace();
}
}
}
private void regist(String key) {
MonitoringService.register(key);
// System.out.println("InputDeamon input");
}
private void update(String key) {
MonitoringService.update(key);
// System.out.println("InputDeamon update");
}
private void parseInput(String input) {
String[] inputArray = input.split("-");
// System.out.println(inputArray.length);
if (inputArray.length < 2) {
return;
} else if ("r".equalsIgnoreCase(inputArray[0])) {
regist(inputArray[1]);
} else if ("u".equalsIgnoreCase(inputArray[0])) {
update(inputArray[1]);
}
}
}
package com.jaykid.hsbc.monitoring.service;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class MonitoringServiceImpl implements MonitoringService {
private ScheduledExecutorService scheduledExecutorService;
private ConcurrentHashMap<String, Object> concurrentHashMap;
private static final long TIME_OUT_VALUE = 3000;
public class TimeOutAction implements Runnable {
String id;
public TimeOutAction(String id) {
this.id = id;
}
@Override
public void run() {
if (concurrentHashMap.get(id) == null) {
System.out.println("Status-updated:" + id);
} else {
System.out.println("Status-TimeOut:" + id);
}
}
}
@Override
public void register(Object obj) {
checkType(obj);
scheduledExecutorService.schedule(new TimeOutAction((String) obj), TIME_OUT_VALUE, TimeUnit.MILLISECONDS);
concurrentHashMap.put((String) obj, obj);
System.out.println("Regist:" + (String) obj);
}
@Override
public void update(Object obj) {
checkType(obj);
concurrentHashMap.remove((String) obj);
System.out.println("Update:" + (String) obj);
}
private void checkType(Object obj) {
if (!(obj instanceof String)) {
throw new RuntimeException("Key is not String");
}
}
@Override
public void init() {
concurrentHashMap = new ConcurrentHashMap<String, Object>();
scheduledExecutorService = Executors.newScheduledThreadPool(1);
}
@Override
public void start() {
// TODO Auto-generated method stub
}
@Override
public void stop() {
// TODO Auto-generated method stub
}
@Override
public void depose() {
// TODO Auto-generated method stub
}
}
分享到:
相关推荐
在安卓开发中,Service是一种用于在后台长时间运行的组件,它可以独立于用户界面执行任务,例如播放音乐、网络通信等。"不被杀死的 Service"指的是通过特定技术手段实现的Service,它能够在设备清理内存或者用户关闭...
在Android开发中,Service是四大组件之一,它在后台运行,不与用户界面直接交互,常用于执行长时间的任务,如播放音乐、网络通信等。本篇文章将深入解析"android service 简单实例源代码",帮助你理解如何在Android...
Service是Android系统中的一个重要组件,它负责在后台执行长时间运行的操作,不依赖于用户界面。在Android应用开发中,理解Service的启动与停止机制对于创建高效、稳定的后台服务至关重要。 一、Service概述 ...
### Oracle Service_Name 参数详解 #### 一、概述 在Oracle数据库管理中,`service_name`是一个重要的参数,它用于标识数据库实例所提供的服务名称。通过设置正确的`service_name`,可以确保客户端应用程序能够...
在Android应用开发中,Service是用于执行长时间运行操作的一个组件,而Activity是用户与应用交互的界面。将Activity与Service绑定是一种常见的通信方式,尤其在需要在后台运行任务且需要与用户界面保持交互时。本...
在Android开发中,Service是一种可以在后台长时间运行的组件,它不具有用户界面,但可以执行各种后台任务,如播放音乐。本示例的"通过Service播放音频的代码"旨在教你如何利用Service组件来实现音乐播放功能,使得...
Java Service Wrapper 使用总结 Java Service Wrapper 是一种可以将 Java 应用程序发布为可安装的服务的解决方案,它提供了一种简单的方式来将 Java 应用程序打包成一个独立的服务。下面是 Java Service Wrapper ...
在Android应用开发中,Service是四大组件之一,用于在后台长时间运行操作,比如播放音乐、网络通信等。然而,如果不加以控制,用户或者系统可能会多次启动同一个Service,导致不必要的资源消耗和服务的异常行为。本...
在这个"android 录音机 service 例子"中,我们将深入探讨如何结合Service和MediaRecorder来创建一个能够后台录制音频的应用。 1. **Service基础** Service组件是Android应用开发中的关键部分,它可以在没有用户...
在Android应用开发中,Service和Activity是两个非常重要的组件。Service用于在后台执行长时间运行的任务,而Activity则负责用户界面交互。在某些场景下,我们可能需要Service与Activity之间进行数据传递,例如本例中...
ServiceNow是当今流行的企业服务管理平台,它提供了一个集成的系统,允许用户在一个统一的界面中管理和自动化企业内部的各种工作流程。ServiceNow平台的基础手册涵盖了该平台的基本使用方法,包括如何导航、管理记录...
在Android应用开发中,`Service`和`Activity`是两个重要的组件。`Service`用于在后台执行长时间运行的任务,而`Activity`则负责用户界面交互。在某些场景下,我们可能需要在`Service`和`Activity`之间传递数据,比如...
在Android应用开发中,Activity和Service是两个关键组件。Activity代表用户界面,而Service则用于在后台执行长时间运行的任务,不直接与用户交互。在实际项目中,常常需要多个Activity与一个Service进行通信,比如本...
在Android系统中,Service是一种可以在后台长时间运行的组件,它不提供用户界面,但可以执行各种任务,如播放音乐、网络通信等。当设备启动时,我们有时希望某些Service能够自动启动,以便立即开始执行预定的任务,...
"解决 Service Broker 未启动的问题" Service Broker 是 SQL Server 中的一个组件,用于实现异步消息传递。它允许数据库管理员创建可靠的、可扩展的消息应用程序。但是,有时可能会遇到 Service Broker 未启动的...
在Android开发中,Service是应用程序组件之一,用于在后台执行长时间运行的操作,即使用户与应用程序交互界面不直接关联。在某些情况下,我们可能需要启动多个Service来执行不同的任务,但问题在于,如果这些Service...
JavaService-2.0.10 是一个针对Java应用程序的服务包装工具,它允许开发者将Java应用程序作为Windows服务来运行。这个版本提供了32位和64位两种版本,以适应不同操作系统环境的需求。 在Windows系统中,服务是一种...
在Android开发中,Service是应用程序组件之一,用于在后台执行长时间运行的操作,即使用户与应用程序交互的界面已关闭。本篇文章将深入探讨Android中的Service,分析不同类型的Service及其特性,并对比它们之间的...
"Android系统在新进程中启动自定义服务过程(startService)的原理" 在 Android 系统中,startService 函数是一个非常重要的函数,它允许开发者在新进程中启动自定义服务。这项技术可以将一些计算型逻辑从主进程中...
在Android开发中,创建一个基于Service的简易音乐播放器是一个常见的练习,可以帮助开发者理解服务(Service)的概念以及如何处理多媒体播放。在这个项目中,我们关注的是Android 4.1.2版本,它提供了对基本多媒体...