草庐IT

【JavaEE】线程池

全部标签

java - 单事务跨多线程解决方案

据我了解,所有事务都是线程绑定(bind)的(即上下文存储在ThreadLocal中)。例如如果:我在事务父方法中启动事务在异步调用中使数据库插入#1让数据库在另一个异步调用中插入#2然后这将产生两个不同的事务(每个插入一个),即使它们共享相同的“事务”父级。例如,假设我执行了两次插入(并使用了一个非常简单的示例,即为了简洁起见,不使用执行程序或可完成的future等):@TransactionalpublicvoidaddInTransactionWithAnnotation(){addNewRow();addNewRow();}将根据需要执行两个插入,作为同一事务的一部分。但是,如

java - 如何使用HttpClient 进行多线程操作?

我要做一个应用程序,它在某个主机上执行登录POST请求,然后导航一些页面,查找并检索一些数据。因为网站资源受session保护,所以我必须先登录网站才能进行一些操作,例如获取或发布一些数据。我的问题是因为HttpClient不是线程安全的,我如何才能只创建一个HttpClient实例但线程可以安全地对其执行?请记住,底层连接必须先登录才能使用。 最佳答案 这是一个答案:http://pro-programmers.blogspot.com/2009/06/apache-httpclient-multi-threads.html

Java 线程 sleep 和中断异常

为什么sleep线程需要trycatch来捕获中断的异常?为什么sleep甚至会发出中断异常错误?这是我真正想在Java编程中找出的两个问题我一直在通过谷歌搜索,但我仍然没有找到明确的解释来解释为什么会发生这两件事。 最佳答案 InterruptedException当线程被阻塞/等待并且被另一个线程中断时抛出(通过Thread.interrupt)。将其视为立即终止的请求,不会遭受Thread.stop()的缺点。这样,即使您指示一个线程hibernate数年,您也可以中断该线程。Therecommendedpractice当抛出

java - 我在哪里可以配置 Java EE 6 中@Asynchronous 调用背后的线程池?

我最近了解到我可以轻松制作anysessionbeanmethodAsynchronous通过简单地添加@Asynchronous注释。例如@AsynchronouspublicFutureprocessPayment(Orderorder)throwsPaymentException{...}我知道JavaEE7添加了ConcurrencyUtilities,但是在JavaEE6中,@Asyncronous方法的线程池配置在哪里?有没有办法设置超时?它是一个固定的线程池吗?一个缓存的?它的优先级是什么?它可以在容器中的某处配置吗? 最佳答案

c++多线程编程

c++线程库:创建线程:需要可调用的函数或者函数对象作为线程入口点例:std::threadthreadname(function_name,args...)在C++中,当使用std::thread创建线程并传递类的成员函数时,需要使用&来获取成员函数的地址,同时还需要传递对象的指针(或引用)作为第一个参数。例:(A为一个类,a为A的一个实例化对象)threadt(&A::func_name,&a,args)补充:在使用多线程编程时,内存管理变得更加复杂,使用智能指针可以帮助我们更好避免内存泄漏auto_ptr是c++98定义的智能指针模板,其定义了管理指针的对象,可以将new获得(直接或间接

c++多线程按行读取同一个每行长度不规则文件

对于非常大的比如上百G的大文件读取,单线程读是非常非常慢的,需要考虑用多线程读,多个线程读同一个文件时不用加锁的,每个线程打开一个独立的文件句柄多线程读同一个文件实现思路思路1先打开一个文件句柄,获取整个文件大小file_size确定要采用线程读取的部分大小read_size和多线程的个数thread_num,算出平均每个线程要读取的大小为read_size/thread_num=each_size计算出每个线程读取的位置start_pos和它下一个线程的读取位置next_pos对于每个线程来说,读取时的情况可以有如下种情况:start_pos等于0(整个文件都采用多线程读取),这种情况下直接

java - InheritableThreadLocal 和线程池

我有一个问题,我真的认为没有解决方案,但我还是会在这里尝试。我的应用程序使用一个线程池,这个池中的一些线程有一个可继承的线程局部变量。我已经扩展了ThreadPoolExecutor类,以便在线程完成执行时从本质上清除线程局部变量(在afterExecute回调方法中)。我了解到,当您有一个InheritableThreadLocal变量时,会在线程初始化时调用childValue()方法以从父线程获取ThreadLocal变量的值。但是,在我的例子中,下次使用线程时(使用一次后),InheritableThreadLocal变量的值为null(因为它之前在afterExecute中被

java - 使用 Apache DBCP 的多线程

我的应用程序在多个线程中执行多个查询。现在我正在为每个查询创建新连接,我想使用池来提高效率。ApacheDBCP池能否同时在多个线程中工作,或者它会“阻塞”每个线程的某些同步方法?如果它阻塞了,我可以使用其他东西吗?更新在本文中:link声明:BecauseallOracleJDBCAPImethodsaresynchronized,iftwothreadstrytousetheconnectionobjectsimultaneously,thenonewillbeforcedtowaituntiltheotheronefinishesitsuse.所以我猜DBCP无法处理这个问题?我

java - 将 Tomcat 线程专用于 servlet

有没有办法配置tomcat来为特定的servlet或web服务保留线程?我知道这可能可以在servlet过滤器中以编程方式完成。假设我使用250个服务线程的默认配置,但我希望其中的20个保留给特定的servlet/web服务?也许这显然是不可能的-如果可以,有人可以解释为什么吗?我使用的是tomcat6。 最佳答案 根据servlet规范,这是不可能的。但是,在Tomcat中,您可以定义在不同端口上运行的多个连接器。每个连接器都有一个单独的线程池:您将在Tomcat的/conf目录下的server.xml文件中找到有关如何配置线程池

java - Hibernate session 线程安全

我知道session不是线程安全的。我的第一个问题:将一个实体传递给另一个线程是否安全,对其进行一些处理,然后将其传递回原始线程并进行更新。publicclassExample1{MyDaodao;...publicvoiddoWork(){MyEntityentity=dao.getEntity();Runnablejob=newJob(entity);Threadt=newThread(job);t.run();t.join();dao.merge(entity);}}我的第二个问题:在一个线程中新建实体并将其保存在另一个线程中是否安全?publicclassExample2{My