使用synchronized阻塞后台服务进程,使之一直运行

在使用dubbo启动服务端时,需要使后台一直运行,看网上是使用输入流来阻塞:

System.in.read(); // 为保证服务一直开着,利用输入流的阻塞来模拟;

找到一种新的方式,使用锁这个对象类来阻塞 使之不关闭

解释:    synchronized (XXX.class)
	       XXX.class本身是XXX类的一个静态属性,也是一个对象。
	       锁XXX.class的意思就是对整个类加锁,也就是说无论创建了多少个XXX类的对象,这些对象都共享一个相同的锁标记。

使用如下:

<span style="color:#ff0000;">synchronized (Provider.class)</span> {//服务器启动后进行线程等待。服务一直运行着
			while(true){
				try{
					Provider.class.wait();
				}catch(InterruptedException e){
					System.out.println(e);
				}
			}
		}

Provider是类名,给这个类对象加了锁,其他的请求过来时就会一直等待上个进程的结束,完整的如下:

public class Provider {
	public static void main(String[] args) throws Exception {
		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
				new String[] { "applicationContext.xml" });
		context.start();
		//System.in.read(); // 为保证服务一直开着,利用输入流的阻塞来模拟
		<span style="color:#ff0000;">synchronized (Provider.class)</span> {//服务器启动后进行线程等待。服务一直运行着
			while(true){
				try{
					Provider.class.wait();
				}catch(InterruptedException e){
					System.out.println(e);
				}
			}
		}
	}
}

使用synchronized阻塞后台服务进程,使之一直运行

时间: 2024-08-29 17:51:29

使用synchronized阻塞后台服务进程,使之一直运行的相关文章

开发 Linux 后台服务进程

开发 Linux 后台服务进程 Linux Daemon编程方法 守护进程(Daemon)是运行在后台的一种特殊进程.它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件.守护进程是一种很有用的进程. Linux的大多数服务器就是用守护进程实现的.比如,Internet服务器inetd,Web服务器httpd等.同时,守护进程完成许多系统任务.比如,作业规划进程crond,打印进程lpd等. 守护进程的编程本身并不复杂,复杂的是各种版本的Unix的实现机制不尽相同,造成不同 Unix

转载:Pixhawk源码笔记十:代码调度,使之定时运行

转自:新浪长沙@WalkAnt 第十一部分 调用代码,使之定时运行 英文参考:http://dev.ardupilot.com/wiki/code-overview-scheduling-your-new-code-to-run-intermittently/ 本节源自:http://liung.github.io/blog/apm/2014-09-05-APM-ArduCopter规划新代码使之按一定频率运行.html 1.用代码调度器(scheduler)运行你的代码 在给定时间间隔内来运行

尚未在 Web 服务器上注册 ASP.NET 2.0。为了使网站正确运行,可能需要手动将 Web 服务器配置为使用 ASP.NET 2.0,按 F1 可了解更多详细信息。

装了win7操作系统后,vs2010运行项目后出现“尚未在 Web 服务器上注册 ASP.NET 2.0.为了使网站正确运行,可能需要手动将 Web 服务器配置为使用 ASP.NET 2.0,按 F1 可了解更多详细信息.”的提示,点击确定后项目可以编译成功,但是在浏览器上运行时却提示“HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效.” 错误代码 0x80070021 这个错误是因为IIS 7 采用了更安全的Web.C

Android SERVICE后台服务进程的自启动和保持

Service组件在android开发中经常遇到,其经常作为后台服务,需要始终保持运行,负责处理一些必要(见不得人)的任务. Service组件在android开发中经常遇到,其经常作为后台服务,需要始终保持运行,负责处理一些必要(见不得人)的任务.而一些安全软件,如360等,会有结束进程的功能,如果不做Service的保持,就会被其杀掉. 如何保持Service的运行状态是现在要说明的,核心就是利用ANDROID的系统广播,这一不会被其他软件影响的常驻程序触发自己的程序检查Service的运行

Android SERVICE后台服务进程的守护

Service组件在android开发中经常遇到,其经常作为后台服务,需要始终保持运行,负责处理一些必要(见不得人)的任务.而一些安全软件,如360等,会有结束进程的功能,如果不做Service的保持,就会被其杀掉. 在早些时候,我们可以通过在 1. service中重写onStartCommand方法,这个方法有三个返回值, START_STICKY是service被kill掉后自动 public int onStartCommand(Intent intent, int flags, int

使程序只运行一个实例

//APP 里面 //1.// 此程序只能运行一次,用互斥量来判断程序是否已运行 1 HANDLE m_hMutex=CreateMutex(nullptr,TRUE, m_pszAppName); 2 if(GetLastError()==ERROR_ALREADY_EXISTS) { return FALSE; } //2. 1 HWND hWnd = FindWindow(nullptr, m_pszAppName/*_T("MyDlg")*/); //第一个参数: 窗口的类名

如何使maven+jetty运行时不锁定js和css[转]

原因是如果NIO被支持的话,Jetty会使用内存映射文件来缓存静态文件,其中包括.js文件.在Windows下面,使用内存映射文件会导致文件被锁定.解决方案是不使用内存映射文件来做缓存.步骤如下: 1.在你使用的Jetty版本的jetty.jar中找到webdefault.xml,它在jar文件中的路径是org/mortbay/jetty/webapp/webdefault.xml.把它拷贝到项目中,比如src/main/resources/webdefault.xml. 2.找到useFile

docker安装postgres镜像&amp;&amp;如何通过Dockerfile使之在运行镜像时初始化数据

前言 本文分为两部分,前半部分简单,后面的部分,其实也不难,但是由于知识点资料比较偏僻,所以这里做一个总结. 在docker中安装postgres镜像 搜索镜像 拉取镜像 查看镜像 在docker镜像启动的时候初始化数据 原文地址:https://www.cnblogs.com/hzhiping/p/10274606.html

Dubbo项目入门

Dubbo是一款高性能.轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现. 它的特性如下 面向接口代理的高性能RPC调用 智能负载均衡 服务自动注册与发现 高度可扩展能力 运行期流量调度 可视化的服务治理与运维 Talk is cheap, Show me the code.现在来着手搭建一个Dubbo项目吧. 搭建一个xml配置的Dubbo项目 创建三个项目 service-api 服务提供者和服务消费者共用的接口 se