验证ArrayList是线程不安全的集合

news/2024/7/7 20:19:11
package collectionSafe;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Test {
/*
在本例中,验证ArrayList是线程不安全的容器
主要思路:
循环同时开启1000个线程,每个线程的作用都是将自己的线程名add进Arraylist中,
等待所有线程执行完后,打印ArrayList.size()是否等于1000,经验证ArrayList线程不安全!
使用Collections中的方法synicronized系列可以将线程不安全的集合变成安全的。
* */
public static void main(String[] args) {
List<String> arrayList = new ArrayList<>();
//arrayList = Collections.synchronizedList(arrayList);//取消此行注释可以验证返回的集合是线程安全的!
for (int i = 0; i < 10000; i++) {
new Thread(new Write(arrayList)).start();
}
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(arrayList.size());
}
}

class Write implements Runnable {
List<String> arrayList;

public Write(List<String> arrayList) {
this.arrayList = arrayList;
}

@Override
public void run() {
arrayList.add(Thread.currentThread().getName());
}
}

转载于:https://www.cnblogs.com/lixin4395/p/10633703.html


http://lihuaxi.xjx100.cn/news/267122.html

相关文章

Windows系统下的 vbs病毒生成器使用方法!

1&#xff0c;压缩包里的东西~ 下载并解压“病毒生成器”压缩文件&#xff0c;打开对应的文件夹&#xff0c;双击"vir1.exe" 应用程序图标。 下载时杀毒软件会自动将其识别为病毒&#xff0c;建议关闭主机上运行的杀毒软件 双击软件启动~&#xff1a;如果有杀毒软件…

深度学习在不同领域的应用,我去,这也行!?

点击上方“视学算法”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达作者丨Giant知乎&#xff08;已授权&#xff09;来源丨https://www.zhihu.com/question/47563637/answer/1997061212编辑丨极市平台导读 本文介绍几款深度学习领域的有趣应用…

XShell连接Deepin

为什么80%的码农都做不了架构师&#xff1f;>>> 先让deepin安装openssh sudo apt-get install openssh-serverchkconfig ssh on 转载于:https://my.oschina.net/enzo/blog/110518

archlinux常用的包管理器

pacman -Sy abc 和源同步后安装名为abc的包 pacman -S abc 从本地数据库中得到abc的信息&#xff0c;下载安装abc包 pacman -Sf abc 强制安装包abc pacman -Ss abc 搜索有关abc信息的包 pacman -Si abc 从数据库中搜索包abc的信息 pacman -Syu 同步源&#xff0c;并更新系统 pa…

怎样用Python控制图片人物动起来?一文就能Get!

作者 | 李秋键责编 | 李雪敬头图 | CSDN 下载自视觉中国出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;引言&#xff1a;近段时间&#xff0c;一个让梦娜丽莎图像动起来的项目火遍了朋友圈。而今天我们就将实现让图片中的人物随着视频人物一起产生动作。…

逻辑回归api介绍

逻辑回归api介绍 sklearn.linear_model.LogisticRegression(solverliblinear, penalty‘l2’, C 1.0) 【solver是用什么样的梯度下降算法来解决】 solver可选参数:{liblinear, sag, saga,newton-cg, lbfgs}&#xff0c; 默认: liblinear&#xff1b;用于优化问题的算法。 对于…

一文读懂机器学习模型评估

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达本文对机器学习模型评估指标进行了完整总结。机器学习的数据集一般被划分为训练集和测试集&#xff0c;训练集用于训练模型&#xff0c;测试集则用于评估模型。针对不同的…

python学习 爬取亚马逊网页,失败后。修改HTTP报文头部后成功!

通过修改HTTP报文头部&#xff0c;来成功获取网页内容&#xff01; python import requests r requests.get("https://www.amazon.cn/gp/product/B01M8L5Z3Y") r.status_code r.encoding >>> import requests >>> r requests.get("https://…