精华内容
下载资源
问答
  • java使用线程池处理并发事务

    千次阅读 2019-02-21 17:32:06
    1.创建线程池对象 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; public class ClosingScheduler { private static ThreadPoolTaskExecutor executor = getThreadPool(); ...

    1.创建线程池对象

    import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
    
    public class ClosingScheduler {
        private static ThreadPoolTaskExecutor executor = getThreadPool();
    
    
        public static ThreadPoolTaskExecutor getThreadPool() {
            ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
            //最小线程数
            threadPoolTaskExecutor.setCorePoolSize(500);
            //最大线程数
            threadPoolTaskExecutor.setMaxPoolSize(2000);
            //空闲线程存活时间
            threadPoolTaskExecutor.setKeepAliveSeconds(200);
            //队列中最大线程
            threadPoolTaskExecutor.setQueueCapacity(2000);
            //初始化
            threadPoolTaskExecutor.initialize();
            return threadPoolTaskExecutor;
        }
    }

    2.创建一个任务类

    public class MessageTask implements Runnable {
    
        //
        private Map<String,Object> data;
        
        // 构造方法,传入你需要处理的数据
        public MessageTask(Map<String,Object> data) {
            this.data = data;
        }
     
        @Override
        public void run() {
            System.out.println(Thread.currentThread().getName());
        }
    }

    3.新建任务对象,并加入线程池进行处理

    public static void main(String[] args) {
            for (int i = 1;i < 20;i++) {
                Map<String, Object> data = new HashMap<>();
                data.put("second",i);
                MessageTask closeTask = new MessageTask(data);
                executor.execute(closeTask);
            }
    }

     

    展开全文
  • 1.SHOW VARIABLES LIKE '%max_allowed_packet%';SET GLOBAL max_allowed_packet = 2*1024*...2.查看连接情况SHOW STATUS LIKE 'Threads%'; SHOW VARIABLES LIKE 'thread%'; SHOW PROCESSLIST SHOW GLOBAL VARIA...

    1.
    SHOW VARIABLES LIKE '%max_allowed_packet%';
    SET GLOBAL max_allowed_packet = 2*1024*1024*10 ;

    2.查看连接情况
    SHOW STATUS LIKE 'Threads%';
    SHOW VARIABLES LIKE 'thread%';

    SHOW PROCESSLIST

    SHOW GLOBAL VARIABLES LIKE 'max_conn%';
    SHOW GLOBAL STATUS LIKE 'Max_used_connections';
    SHOW GLOBAL STATUS LIKE 'Connections';
    #加大链接数量
    SET GLOBAL max_connections=30000 ;
    SET GLOBAL max_connect_errors=1000 ;
    #加大线程池
    SET GLOBAL thread_cache_size=64;
    #查看是否有锁
    SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
    #锁等待500秒
    SET innodb_lock_wait_timeout = 500

     

    备注:以上语句直接执行即可,但是重启会失效,除非写在配置文件中

    转载于:https://www.cnblogs.com/hcroom/p/10884861.html

    展开全文
  • 线程池事务处理

    千次阅读 2017-09-01 13:26:41
    public XXX call() throws Exception { DefaultTransactionDefinition def = new DefaultTransactionDefinition(); def.setPropagationBehavior(TransactionDefinition.PROPAGATION_...// 事物隔离级别,开启新事务
    public XXX call() throws Exception {
    
    DefaultTransactionDefinition def = new DefaultTransactionDefinition();
    def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);// 事物隔离级别,开启新事务
    TransactionStatus status = txManager.getTransaction(def); // 获得事务状态
    // 

    txManager.commit(status);

    } catch (Exception e) {
    e.printStackTrace();
    txManager.rollback(status);
    }
    return XXX;
    }
    展开全文
  • 主要介绍了线程池中使用spring aop事务增强,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考
  • 测试一个xxl-job,遇到问题事务问题 情景再现 使用@PostConstruct注解来测试,由于是上传素材,比较耗时,所以使用了线程池,一切很顺利的是时候,保存日志的时候报了个错: org.springframework.transaction....

    测试一个xxl-job,遇到问题事务问题

    情景再现

    使用@PostConstruct注解来测试,由于是上传素材,比较耗时,所以使用了线程池,一切很顺利的是时候,保存日志的时候报了个错:

    org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: HikariDataSource HikariDataSource (DatebookHikariCP) has been closed.
     at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:305)
     at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:378)
     at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:474)
     at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:289)
     at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)
     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
    

    我擦,啥情况!百度了半天,也没找到问题,刚开始以为是线程池里面又开了线程导致的,多次测试发现是开了线程池的影响。具体是啥原因,别问我,问就是不知道。不过还是挺坑的,记录一下吧。

    展开全文
  • 线程池中如何使用Spring事务

    千次阅读 2019-03-15 17:57:53
    下面的代码在线程池中调用deviceInfoService服务的updateDeviceInfo方法,接着抛出空指针异常,然而数据没有回滚。 public void testUpdate() { executor.execute(new Runnable() { @Override public void ...
  • Spring Boot使用线程池处理事务任务

    千次阅读 2018-07-04 05:51:24
    好了,思路就是,将Controller里面的方法包装成一个 Runnable, 放到一个单线程的线程池里进行执行,任务成功后,将结果放入一个 Map里,前端定期轮询这个 Map。一开始简单粗暴的在某个Service里创建一个 static ...
  • 线程池

    2018-11-25 19:17:09
    根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果;少了浪费了系统资源,多了造成系统拥挤效率不高。用线程池控制线程数量,其他线程排队等候。一个任务执行完毕,再从队列的中取最前面的任务...
  • @Test public void druidTest() throws Exception { Properties p = new Properties(); FileInputStream fs = new FileInputStream(new File("druid.properties"));... DruidDataSourceFactory....
  • 配置线程池 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler; import org.springframework.context.annotation....
  • 一般情况下,这样的场景线程的任务肯定全部没有了,程序重启的时候这些任务也没有办法重做了。因此我们需要借助其他的方式来重做这些丢失的任务。大体的思路是日志+定时器的方式。 处理的大体流程: 1) 提交...
  • 创建一个线程池核心线程为比如4,用...当执行取消任务时候,发现这种情况,提交的任务为7,线程池核心线程为4,这时候4个核心线程中有一个还没返回数据,就调用了下面的任务,下面没取消的任务,同样没返回结果。 ...
  • 在项目里使用了线程池运行同一个类的实例方法,代码大致如下,运行时发现job方法的事务不生效 @Transactional public void doJob() { EXECOTOR.execute(() ->job()); } @Transactional public ...
  • 线程池原理

    2020-10-03 16:20:11
    线程池java线程池java线程池介绍线程池作用统一管理复用线程控制并发数量线程池原理线程池的七个参数workQueuethreadFactoryhandler复用线程使用线程池的注意事项六种线程池的使用由ThreadPoolExecutor 创建...
  • 一面 1、HashMap底层原理?HashTable和ConcurrentHashMap他们之间的相同点和不同点? 2、由上题提到锁的问题 ... 8、G1回收器讲回收过程 9、Tcp三次握手,四次挥手大概讲一下? 10、类加载过程 11、双亲...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 51,507
精华内容 20,602
关键字:

线程池情况下的事务