如何启动单线程实现多线程效果及保证安全?
同时跑list
@Slf4j
@Component
public class Test {//引入mapper@Autowiredprivate XXXMapper xxxMapper;private static Test layoutNumUtils;@PostConstructpublic void init(){layoutNumUtils = this;layoutNumUtils.xxxMapper = this.xxxMapper;}//引入mapper结束/*** 多线程处理list** @param data 数据list* @param threadNum 线程数*/public synchronized void handleList(List<Info> data, int threadNum) {int length = data.size();if (length<threadNum){log.info("当前线程数大于总数,默认使用总数数量的线程数");threadNum = length;}if (length == 0){log.info("当前无需运行的数据,默认使用1个线程数");threadNum = 1;}int tl = length % threadNum == 0 ? length / threadNum : (length/ threadNum + 1);
//给每个线程分配线程数for (int i = 0; i < threadNum; i++) {int end = (i + 1) * tl;HandleThread thread = new HandleThread("线程[" + (i + 1) + "] ", data, i * tl, end > length ? length : end);thread.start();}}class HandleThread extends Thread {private String threadName;private List<DemoInfo> data;private int start;private int end;@Autowiredprivate ServiceImpl service;public HandleThread(String threadName, List<DemoInfo> data, int start, int end) {this.threadName = threadName;this.data = data;this.start = start;this.end = end;}@Overridepublic void run() {//业务代码List<Info> subList = data.subList(start, end);System.out.println(threadName+"处理了"+subList.size()+"条!");}}
// public static void main(String[] args) {//
// Test test = new Test();
// // 准备数据
// DemoServiceImpl service = new DemoServiceImpl();
// List<Info> list = service.getAll();
// System.out.println(list);
// test.handleList(list, 5);
// System.out.println(list);
// }
如何启动单线程实现多线程效果及保证安全?相关推荐
- Redis 5.0.8+常见面试题(单线程还是多线程、先更新缓存还是数据库、雪崩穿透击穿解决办法...)
Redis 6.0 保姆级教程(含微服务案例与完整面试题):https://www.yuque.com/yuxuandmbjz/redis Redis是单线程还是多线程 ?为什么这么设计 ? Redi ...
- 【Redis】到底是单线程还是多线程以及Redis为什么这么快?
文章目录 Redis到底是单线程还是多线程的? Redis为什么是单线程的? Redis为什么基于内存? 为什么要为Redis绑定某一固定CPU? Redis的多线程情况 Redis的单线程到底有多快 ...
- C++多线程之间,线程函数启动之后,多线程依赖的启动和线程唤醒操作。
C++多线程之间,线程函数启动之后,线程间依赖的启动和唤醒操作 一.原理分析 1. 线程依赖关系 二. 实例分析 2.1 多线程启动 2.2 多线程模式讲解 (1) 多线程开启与主线程唤醒 (2)单线 ...
- 关于python的单线程和多线程
单线程 比如两件事,要相继执行,而不是一起执行 '''学习一下单线程和多线程的问题'''from time import ctime,sleep '''单线程''' print('单线程开始:') d ...
- Redis 属于单线程还是多线程?不同的版本有什么区别?
Redis 是普及率最高的技术之一,同时也是面试中必问的一个技术模块,所以从今天开始我们将从最热门的 Redis 面试题入手,更加深入的学习和了解一下 Redis. 我们本文的面试题是 Redis 属 ...
- java实现tcp服务器(单线程、多线程)、客户端
全栈工程师开发手册 (作者:栾鹏) java教程全解 java实现tcp服务器(单线程.多线程).客户端. 服务器端接收客户申请,响应时间戳和用户源字符串. 客户端使用控制台作为输入输出流 tcp服务 ...
- javasript的单线程和多线程
前置知识了解 一.解释程序.进程.线程 程序:顾名思义啦,就是比如CSDN.wechat.微博都是一个独立的程序 进程:进程就是我们独立运行的一个程序,进程拥有独立运行所需要的全部资源,主要负责资源的 ...
- zookeeper的c API 单线程与多线程问题 cli_st和cli_mt
同样的程序,在centos和ubuntu上都没有问题,在solaris上问题却多多,据说是solaris管理更加严格. zookeeper_init方法,在传入一个错误的host也能初始化出一个非空的 ...
- java单线程和多线程的区别
1.单线程和多线程的区别? 你早上上班,正要打卡的时候,手机响了..你如果先接了电话,等接完了,在打卡,就是单线程. 如果你一手接电话,一手打卡.就是多线程. 这两件事的结果是一样的..你接了电话且打 ...
最新文章
- 通过ObjectMapper将实体转成字符串 ,将 用json存的的list 回转list
- HDU 4587 TWO NODES(割两个点的最大连通分支数)
- 网工路由基础(4)EIGRP协议
- if var matlab,matlab中if 语句后面的判别式不能是算术表达式?或者说变量?
- Android中图片优化之webp使用
- 大姐,你是不是得了尿频?
- c#屏幕录制(经典)(含源码和AForge.Video.FFMPEG.DLL)及填坑办法
- 为什么虚拟助手的前途一片光明
- CVE-2020-1472复现与完整利用
- 计算机上的小键盘,电脑小键盘关闭方法有哪些 小键盘上的六个键都有什么用...
- HTML5实现简单留言板1
- 2016 清华 计算机 考研 经验 总结
- 怎么把网页添加到公众号里
- 可可直播电视---开通论坛
- linux能修改用户的权限,linux怎样修改用户权限
- TTS中的stop_tokens
- 利用tshark对网络数据包做进一步的分析
- python打开本地浏览器_python如何实现打开浏览器
- 在黑马的两个月培训的感受
- fastadmin列表页展示分类名称通用搜索按分类名称搜索