为WebService指定线程池

通过阅读WebService发布过程的源代码,可以配置自定义的线程池

package org.zln.ws.server;

import com.sun.xml.internal.ws.api.BindingID;import com.sun.xml.internal.ws.transport.http.server.EndpointImpl;import org.slf4j.Logger;import org.slf4j.LoggerFactory;

import javax.xml.ws.WebServiceFeature;import java.util.concurrent.Executor;import java.util.concurrent.Executors;

/** * Created by sherry on 16/12/15. */public class Main {

/**     * 日志     */    private static Logger logger = LoggerFactory.getLogger(Main.class);

public static void main(String[] args) {        UserService userService = new UserService();        String address = "http://localhost:8080/Service/UserService";        EndpointImpl endpoint = new EndpointImpl(BindingID.parse(userService.getClass()), userService, new WebServiceFeature[0]);        Executor executor = Executors.newFixedThreadPool(2);        endpoint.setExecutor(executor);        endpoint.publish(address);

logger.debug("Service服务发布成功");    }

}
时间: 2024-12-21 01:01:00

为WebService指定线程池的相关文章

应用线程池ThreadPoolExecutor

线程池的大小 在配置和调整应用线程池的时候,首先考虑的是线程池的大小. 线程池的合理大小取决于未来提交的任务类型和所部署系统的特征.定制线程池的时候需要避免线程池的长度"过大"或者"过小"这两种极端情况. 线程池过大:那么线程对稀缺的CPU和内存资源的竞争,会导致内存高使用量,还可能耗尽资源. 线程池过小:由于存在很多可用的处理器资源还未工作,会对吞吐量造成损失. 精密的计算出线程池的确切大小是很困难的,一般我们会估算出一个合理的线程池大小. 对于计算密集型任务,一

线程池的原理与实现

java中的线程池框架为Executors,但是这里我们将自己实现简单的线程池,主要目的是理解它的原理. 线程池主要由两个部分组成: (1)线程数组,用于执行任务. (2)任务队列. 下面的两个实现都是按照这种思路来做的. 一.简单的线程池,有点问题 package com.chuiyuan.utils; import java.util.LinkedList; /** * Created by chuiyuan on 2/21/16. * start: * create a new threa

12.ThreadPoolExecutor线程池原理及其execute方法

jdk1.7.0_79  对于线程池大部分人可能会用,也知道为什么用.无非就是任务需要异步执行,再者就是线程需要统一管理起来.对于从线程池中获取线程,大部分人可能只知道,我现在需要一个线程来执行一个任务,那我就把任务丢到线程池里,线程池里有空闲的线程就执行,没有空闲的线程就等待.实际上对于线程池的执行原理远远不止这么简单. 在Java并发包中提供了线程池类——ThreadPoolExecutor,实际上更多的我们可能用到的是Executors工厂类为我们提供的线程池:newFixedThread

核心线程池的内部实现(读书笔记)

对于核心的几个线程池,无论是newFixedThreadPool()方法,newSingleThreadExecutor()还是newCachedThreadPool()方法,虽然看起来创建的线程有着完全不同的功能特点,但其内部实现均使用了ThreadPoolExecutor实现,下面给出了三个线程池的实现方式. public static ExecutorService newFixedThreadPool(int nThreads) { return new ThreadPoolExecut

并发编程 — 详解线程池

本文将讲述如何通过JDK提供的API自定义定制的线程池 Java代码   //固定线程数 -- FixedThreadPool public static ExecutorService newFixedThreadPool(int nThreads) { return new ThreadPoolExecutor(nThreads, nThreads, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); } //单

.net线程池内幕

线程池的作用线程池,顾名思义,线程对象池.Task和TPL都有用到线程池,所以了解线程池的内幕有助于你写出更好的程序.由于篇幅有限,在这里我只讲解以下核心概念: 线程池的大小 如何调用线程池添加任务 线程池如何执行任务 Threadpool也支持操控IOCP的线程,但在这里我们不研究它,和task以及TPL相关的会在其他博客中详解. 线程池的大小不管什么池,总有尺寸,ThreadPool也不例外.ThreadPool提供了4个方法来调整线程池的大小: SetMaxThreads GetMaxTh

Android性能优化之使用线程池处理异步任务

说到线程,我想大家都不陌生,因为在开发时候或多或少都会用到线程,而通常创建线程有两种方式: 1.继承Thread类 2.实现Runnable接口 虽说这两种方式都可以创建出一个线程,不过它们之间还是有一点区别的,主要区别在于在多线程访问同一资源的情况下,用Runnable接口创建的线程可以处理同一资源,而用Thread类创建的线程则各自独立处理,各自拥有自己的资源. 所以,在Java中大多数多线程程序都是通过实现Runnable来完成的,而对于Android来说也不例外,当涉及到需要开启线程去完

Android 性能优化之使用线程池处理异步任务

说到线程,我想大家都不陌生,因为在开发时候或多或少都会用到线程,而通常创建线程有两种方式: 1.继承Thread类 2.实现Runnable接口 虽说这两种方式都可以创建出一个线程,不过它们之间还是有一点区别的,主要区别在于在多线程访问同一资源的情况下,用Runnable接口创建的线程可以处理同一资源,而用Thread类创建的线程则各自独立处理,各自拥有自己的资源. 所以,在Java中大多数多线程程序都是通过实现Runnable来完成的,而对于Android来说也不例外,当涉及到需要开启线程去完

diy数据库(七)--线程控制块、消息、线程池

一.概述 1.diy数据库使用的是一个多进程and多线程的服务器模型.每个进程作为一个节点实例,监听一个端口:而每个用户连接在数据库节点实例中都会有一个代理线程与之对应. 2.除了主线程外每个线程都有一个EDU(进程调度单元,也可称为线程控制块),另外每种系统线程类型有且只有一个线程实体(这里的系统线程只有一种,即监听线程,主线程不在线程管理池里面) 3.代理线程是专门处理用户请求的 ,由监听线程创建 4.线程池对进行调度,通过传入不同的类型, 内部调用不同的函数执行相应请求 5.EDU回池后可