`
klts
  • 浏览: 41351 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论
  • klts: 我一直用的jdk1.6.0_13,感觉还可以
    JDK
  • wuyulunbi: 现在jdk什么版本的稳定
    JDK

线程控制-客户端获取信息无反应

 
阅读更多

今天遇到一个问题,webservice client获取server信息没有任何反应,现在希望如果这个等待时间(超时)过长,那么中断这个request。

方法一:weblogic设置方法

(javax.xml.rpc.Stub)PortObject._setProperty("weblogic.wsee.transport.connection.timeout", 5);
(javax.xml.rpc.Stub)PortObject._setProperty("weblogic.wsee.transport.read.timeout", 5);

 

 

 

 资源地址:http://edocs.weblogicfans.net/wls/docs92/webserv/client.html

 

方法二:下面是自己最初用thread手动写的例子

public class Test1 {
	public static void main(String[] args) {
		new Test1().test("para1");
	}
	
	/**
	 * 主线程中,在启动A线程之前先启动B线程来控制超时时间
	 * 由于A,B和主线程平级运行,所以在主线程里需要等待A,B线程isNotAlive的时候再来判定变量isResponse,进而控制是否超时
	 * @param para
	 * @return
	 */
	public synchronized String test(String para) {
		String result = null;
		
		B b = new B();
		A a = A.getIntance();
		a.setPara(para);

		b.start();
		a.start();
		while(true) {
			if (A.isResponse && !a.isAlive() && !b.isAlive()) {
				result = a.getResult();
				System.out.println(a.getResult());break;
			}
			if (!A.isResponse && !a.isAlive() && !b.isAlive()) {
				System.out.println("time out");break;
			}
		}
		
		System.out.println(a.getPara());
		a.clear();
		System.out.println(a.getPara());
		return result;
	}
}

class A extends Thread{
	
	private static A a = null;
	private A(){}
	
	public static A getIntance() {
		if (a == null) {
			a = new A();
		}
		return a; 
	}

	public String result;
	public String para;
	public String getResult() {
		return result;
	}

	public void setResult(String result) {
		this.result = result;
	}

	public String getPara() {
		return para;
	}

	public void setPara(String para) {
		this.para = para;
	}

	public void run() {
		result = getSIDetails();
	}
	
	public static boolean isResponse = false;
	public String getSIDetails(){
		//获取server的information,模拟无反应
		while (true) {}
		
		//isResponse = true;
		//return result;
	}
	
	public void clear() {
		a = null;
		result = null;
		para = null;
		isResponse = false;
	}
}

class B extends Thread {
	
	public void run() {
		if (!A.isResponse) {
			try {
				sleep(10*1000);//设置超时时间,等待10s后B线程舒醒,继续执行后面的程序

				if (A.getIntance().isAlive()) {
					A.getIntance().stop();
				}
					
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
}

 

  • 大小: 68.3 KB
分享到:
评论

相关推荐

    cpp-StarCraftII客户端C库用于构建脚本机器人和使用SC2API的研究

    例如,`SC2APIProtocol::GameInfo`结构体用于获取游戏的基本信息,而`Action`类则用于定义玩家的操作行为,如选择单位、移动、攻击等。 构建脚本机器人的过程通常包括以下几个步骤: 1. **初始化**:使用`SC2...

    解决python线程卡死的问题

    可以通过系统监控工具来获取这些信息,如`top`命令。`top`命令能够实时显示系统中各个进程(包括线程)的资源占用状况,帮助开发者快速定位问题。 - **操作步骤**: - 打开终端。 - 输入`top`命令。 - 在显示的...

    VB下FTP多线程技术的实现.doc

    通过VB 6.0的Internet Transfer控件和Windows API函数,开发者可以构建出反应迅速、交互性强的FTP客户端,以应对日益增长的网络信息需求。随着互联网的普及和大数据时代的到来,VB的多线程FTP技术将有更大的应用前景...

    vc++ 开发实例源码包

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    (2024)跳槽涨薪必备精选面试题.pdf

    - `Semaphore` 控制同时访问特定资源的线程数量。 - 两者都基于内部计数器实现,但应用场景不同。 6. **Synchronized的偏向锁、轻量级锁、重量级锁** - **偏向锁** 适用于无竞争的情况。 - **轻量级锁** 使用 ...

    httpcore-tutorial-simplified-chinese.pdf

    - **监听I/O反应器**:监听客户端的连接请求。 - **连接I/O反应器**:处理客户端的连接请求。 **3.4 I/O反应器异常处理** - **I/O反应器审计日志**:记录I/O反应器的操作日志。 **3.5 非阻塞的HTTP连接** - **非...

    qt4学习笔记

    信号(signal)是从一个对象发送出去的信息,而槽(slot)则是接收这些信号并做出相应反应的方法或函数。 - 在Qt中,当一个信号被触发时,相应的槽函数会被自动调用,实现对象间的通信。 - **示例解释:** - 通过连接...

    井下排水自动化手机监控系统的设计——基于android及以太网技术.pdf

    手机客户端通过轮询方式获取这些信息,对比预设参数,一旦检测到异常,会立即向用户发送报警,并具备一键呼叫功能以快速响应紧急情况。 3. **服务保证机制** 为了确保手机客户端始终能接收到报警信息,系统设计了...

    C#程序单词注释汇总

    根据给定的文件信息,以下是对“C#程序单词注释汇总”的详细解析与扩展。 ### C#程序单词注释汇总 #### 概述 在C#编程中,注释是一种非常重要的工具,它帮助开发者更好地理解代码逻辑、功能实现等。本篇将围绕C#...

    Nginx面试专题.pdf

    - **反应器模式**:主事件循环监听操作系统的事件,接收数据并将其存入缓冲区,然后进行处理。 - **单线程并发**:单个工作进程可以处理数万个并发连接。 4. **阻止未定义服务器名称的请求** - 可通过配置一个空...

    visual c++ vc编写远程控制软件源码.zip

    在源码中,"GetInfo"可能是一个用于获取远程计算机信息的模块,例如系统状态、硬件配置等,这需要通过网络发送请求并接收响应。 其次,屏幕共享是远程控制的关键环节。VC++可以通过GDI(图形设备接口)或DirectX...

    Core Java 2 Volume I 7th Edithon

    - **Class类**:获取类的信息,动态创建对象,调用方法。 - **访问私有成员**:通过反射访问私有字段和方法。 10. **Java SE新特性**: - **Java 7**:例如Try-with-resources语句,多租户架构。 - **Java 8**...

    深入浅出Redis-redis哨兵集群.docx

    `ServerSocketChannel.accept()`用于获取并注册新的`SocketChannel`,然后设置非阻塞模式和其他Socket选项,如接收缓冲区大小、重用地址、保持活动连接等。 - `Acceptor`还会注册到`ReactorPool`,`ReactorPool`是...

    2019年Java面试题集格式.pdf

    - **请求处理**:如何通过HttpServletRequest对象获取客户端发送的数据。 ### 六、应用服务器篇 - **应用服务器基础知识**:如Tomcat、Jetty、WebLogic等服务器的特点和配置。 - **特点**:每种应用服务器的主要...

    servlet2.4中文规范

    - **URL重写**:提供了一种方式来实现无状态的会话跟踪,通过URL添加额外的信息。 Servlet 2.4规范的这些特性为开发者提供了强大而灵活的工具,以构建复杂、高性能的Web应用程序。虽然现在Servlet 4.0已经发布,但...

    SpringCloud 注册发现、Feign服务调用、Hystrix实战、-spring-cloud-study.zip

    其他服务则可以通过 Eureka 获取到所有可用服务的信息,实现服务间的通信。 接下来,Feign 是 Spring Cloud 中的一个声明式 REST 客户端,它简化了服务之间的调用。通过 Feign,开发者可以定义一个接口,接口的方法...

    android 大例子

    - fused_location_provider_client:Google Play服务中的位置API,用于获取用户的位置信息。 - GPS、WiFi和移动网络定位的集成。 11. **Android组件间通信**: - Intents:用于启动Activity、Service或...

    RoboCup机器人足球仿真比赛开发设计流程.pdf

    2. **多线程程序结构**:每个参赛队伍的客户端程序(Client)通常由11个Agent组成,每个Agent包含两个线程:IO处理线程负责接收和响应服务器的数据包,决策线程根据有限信息进行决策并发送动作指令。为了确保数据...

    JAVA和android实时监控的DEMO

    在这个DEMO中,JAVA服务器端可能实现了监听特定端口,接收Android客户端发送的数据,解析这些数据,并根据需要返回相应的控制指令或反馈信息。 其次,Android客户端的实时监控功能。Android是一个基于Linux内核的...

Global site tag (gtag.js) - Google Analytics