ThreadLocal生成多线程WebClient-阿里云开发者社区

开发者社区> 神巧合> 正文

ThreadLocal生成多线程WebClient

简介: package test; //www.cnblogs.com/chenying99/articles/3213544.html import com.gargoylesoftware.htmlunit.BrowserVersion; import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController; impo
+关注继续查看
package test;


//www.cnblogs.com/chenying99/articles/3213544.html
import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController;
import com.gargoylesoftware.htmlunit.WebClient;
//多线程webclient,本方案简单、小巧,容易理解
//ThreadLocalClientFactory.getInstance().getWebClient()调用
    public  class ThreadLocalClientFactory{
        
            //单例工厂模式
        private final static ThreadLocalClientFactory instance =new ThreadLocalClientFactory();
        
        public static ThreadLocalClientFactory getInstance(){
            return instance;
            }
        
        
        // 覆写ThreadLocal的initialValue方法
        //线程的本地实例存储器,用于存储WebClient实例
      private ThreadLocal<WebClient> client = new ThreadLocal<WebClient>() {  
    
          @Override    
      //该方法ThreadLocal变量第一次get的时候执行,如果该线程已经执行过set方法,initialValue不会执行
      protected synchronized WebClient initialValue(){  
          WebClient webClient = new WebClient(BrowserVersion.FIREFOX_17);  
            
           //设置webClient的相关参数  
          webClient.getCookieManager().setCookiesEnabled(true);// 开启cookie管理
            webClient.getOptions().setJavaScriptEnabled(true);// 开启js解析
            webClient.getOptions().setCssEnabled(false);
            // 当出现Http error时,程序不抛异常继续执行
            webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
            // 防止js语法错误抛出异常
            webClient.getOptions().setThrowExceptionOnScriptError(false); // js运行错误时,是否抛出异常
            webClient.getOptions().setTimeout(10000);
            // 默认是false, 设置为true的话不让你的浏览行为被记录
            webClient.getOptions().setDoNotTrackEnabled(false);
            // 设置Ajax异步处理控制器即启用Ajax支持
            webClient
                    .setAjaxController(new NicelyResynchronizingAjaxController());
        
          return webClient;  
      }  
  };  
    
  
  public void setWebClient(WebClient wc) {  
      client.set(wc);  
  }  
    
  public WebClient getWebClient() {  
      return client.get();  
  } 
  

    }


本文出自 “点滴积累” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1792566

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
java多线程:并发包中ReentrantReadWriteLock读写锁的锁降级模板
写锁降级为读锁,但读锁不可升级或降级为写锁。 锁降级是为了让当前线程感知到数据的变化。 1 //读写锁 2 private ReentrantReadWriteLock lock=new ReentrantReadWriteLock(); 3 //读锁 4 private ReadLock readLock=lock.
714 0
Java多线程--认识多线程(Thread、Runnable)
<h1>1、进程与线程</h1> <div> <span style="white-space:pre"></span>dos系统:单进程。只能有一个程序独自运行,其他程序无法运行。</div> <div> <span style="white-space:pre"></span>windows系统:多进程。同一时间段上有多个程序同时运行。</div> <div> <img src=
1504 0
WebDriver多线程并发
要想多线程并发的运行WebDriver,必须同时满足2个条件,首先你的测试程序是多线程,其次需要用到Selenium Server。下载位置如下图:   下载下来后是一个jar包,需要在命令行中运行。
1153 0
Docker 为 ASP.NET Core Web 应用程序生成 Docker 映像,创建并运行多个容器
1.为 ASP.NET Core 应用程序生成 Docker 映像 下载这个事例项目:https://github.com/dotnet/dotnet-docker/tree/master/samples/aspnetapp 下载完成后给这项目生成一个镜像名为aspnetapp镜像 docker build -t aspnetapp .
885 0
java多线程:并发包中ReentrantLock锁的公平锁原理
一:锁的原理结构 (1)锁对象内部维护了一个同步管理器的对象AbstractQueuedSynchronizer,AbstractOwnableSynchronizer (2)该对象其实是一个抽象类,具体的锁的管理器继承该抽象类 (3)该抽象类的关键属性有:---->Thread exclus...
514 0
Docker 为 ASP.NET Core WebApi 应用程序生成 Docker 映像,创建容器并运行
1.使用VS2017新建ASP.NET Core WebApi项目 选择API启用Docker支持 2.为 ASP.NET Core WebApi 应用程序生成 Docker 映像,并创建容器运行 生成项目,将项目拷贝到 E:\web\aspnetcore.
1661 0
多线程编程学习四(Lock 的使用)
一、前言     本文要介绍使用Java5中 Lock 对象,同样也能实现同步的效果,而且在使用上更加方便、灵活,主要包括 ReentrantLock 类的使用和ReentrantReadWriteLock 类的使用。
814 0
如何让您的php也支持pthreads多线程
  我们常常会碰到这样一种情况,开发环境在windows下开发,而生产环境确是linux。windows下能正常运行,上传到linux后却无法好好地玩耍了。然后开始了一轮尼玛式的疯狂的查找原因,最后发现是服务器环境问题。
1076 0
+关注
346
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载