package com.jdcloud.utill;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.zip.CheckedOutputStream;
/**
* ClassName:Automic
* PackageName:com.jdcloud
* Description:线程安全,以原子方式将当前值加1,注意:这里返回的是自增前的值。在并发项目中调用此
* @date:2020/5/13 8:57
* @author:robin
*/
public class Automic {
private static AtomicInteger counter = new AtomicInteger(1);
public static int getCount(){
// 线程安全,以原子方式将当前值加1,注意:这里返回的是自增前的值。
return counter.getAndIncrement();
}
//测试工具方法
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
int count = getCount();
System.out.println(count);
}
}
}
测试结果:
死循环的例子
package com.jdcloud.pojo;
import com.jdcloud.utill.Automic;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
/**
* ClassName:MultiThreading
* PackageName:com.jdcloud.pojo
* Description:
*
* @date:2020/5/13 8:33
* @author:robin
*/
public class MultiThreading {
//上面使用没问题
// final static Map<String,String> map =new HashMap<>();
final static HashMap<String,String> map=new HashMap<String, String>(2);
public static void main(String[] args) throws InterruptedException {
//创建线程
Thread thread=new Thread(new Runnable() {
@Override
public void run() {
//fori是循环
for (int i = 0; i < 100000; i++) {
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("执行了此操作------------------------>"+ Automic.getCount());
map.put(UUID.randomUUID().toString(),"");
}
},"ftf"+i).start();
}
}
},"ftf");
thread.start();
//加入下面代码含义:让线程输出整齐
thread.join();
}
}