package thread.test;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicInteger;
public class ThreadTest implements Runnable
{
public static void main(String[] args)
{
for (int i = 0; i < sfThreadNum; i++)
{
new Thread(new ThreadTest()).start();
;
}
try
{
sfAllTaskLatch.await();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
/*for (int num : set)
{
System.out.println(num);
}
System.out.println("大小" + set.size());*/
}
@Override
public void run()
{
// mStartIndex = safe.getAndIncrement();
//以原子的方式实现加1
mStartIndex = sTaskIndex.getAndIncrement();
synchronized (set)
{
set.add(mStartIndex);
}
try
{
Thread.sleep(1000);
System.out.printf("线程%3d启动!!!", mStartIndex);
System.out.println();
}
c
AtomicInteger、CountDownLatch并发编程
最新推荐文章于 2023-06-07 16:24:10 发布
本文通过一个Java并发编程示例展示了如何使用AtomicInteger进行线程安全的计数,并利用CountDownLatch实现主线程等待所有子线程完成后再继续执行。代码中创建了100个线程,每个线程以原子方式增加任务索引并将其添加到线程安全的TreeSet中,主线程在所有子线程执行完后输出结果。
摘要由CSDN通过智能技术生成