java多线程递增计数
2016-08-31 16:42
218 查看
有多个线程,每个线程随机访问一个变量,无论谁获取访问权,变量都会递增,当变量值到达30后,线程终止。
public class ThreadTest extends Thread{
//变量上线值
public final static int NUM = 30;
//计数值
public static int count = 0;
//加锁
private static byte[] lock = new byte[0];
@Override
public void run() {
while (true) {
synchronized (lock) {
if (count >= ThreadTest.NUM)
return;
count++;
System.out.println("线程"+this.getName()+"----"+count);
}
}
}
public ThreadTest(String threadName) {
super(threadName);
}
public static void main(String[] args) {
List<ThreadTest> list = new ArrayList<ThreadTest>();
for (int i = 1; i <= 5; i++)
{
ThreadTest my = new ThreadTest("Thrad " + i);
my.start();
list.add(my);
}
try
{
for (ThreadTest my : list)
{
my.join();
}
}
catch (InterruptedException e)
{
e.printStackTrace();
}
System.out.println("Over.");
}
}
执行结果
线程Thrad 1----1
线程Thrad 1----2
线程Thrad 1----3
线程Thrad 1----4
线程Thrad 1----5
线程Thrad 2----6
线程Thrad 2----7
线程Thrad 2----8
线程Thrad 2----9
线程Thrad 2----10
线程Thrad 2----11
线程Thrad 2----12
线程Thrad 2----13
线程Thrad 2----14
线程Thrad 2----15
线程Thrad 2----16
线程Thrad 1----17
线程Thrad 1----18
线程Thrad 1----19
线程Thrad 1----20
线程Thrad 1----21
线程Thrad 1----22
线程Thrad 1----23
线程Thrad 1----24
线程Thrad 1----25
线程Thrad 1----26
线程Thrad 1----27
线程Thrad 1----28
线程Thrad 1----29
线程Thrad 1----30
Over.
public class ThreadTest extends Thread{
//变量上线值
public final static int NUM = 30;
//计数值
public static int count = 0;
//加锁
private static byte[] lock = new byte[0];
@Override
public void run() {
while (true) {
synchronized (lock) {
if (count >= ThreadTest.NUM)
return;
count++;
System.out.println("线程"+this.getName()+"----"+count);
}
}
}
public ThreadTest(String threadName) {
super(threadName);
}
public static void main(String[] args) {
List<ThreadTest> list = new ArrayList<ThreadTest>();
for (int i = 1; i <= 5; i++)
{
ThreadTest my = new ThreadTest("Thrad " + i);
my.start();
list.add(my);
}
try
{
for (ThreadTest my : list)
{
my.join();
}
}
catch (InterruptedException e)
{
e.printStackTrace();
}
System.out.println("Over.");
}
}
执行结果
线程Thrad 1----1
线程Thrad 1----2
线程Thrad 1----3
线程Thrad 1----4
线程Thrad 1----5
线程Thrad 2----6
线程Thrad 2----7
线程Thrad 2----8
线程Thrad 2----9
线程Thrad 2----10
线程Thrad 2----11
线程Thrad 2----12
线程Thrad 2----13
线程Thrad 2----14
线程Thrad 2----15
线程Thrad 2----16
线程Thrad 1----17
线程Thrad 1----18
线程Thrad 1----19
线程Thrad 1----20
线程Thrad 1----21
线程Thrad 1----22
线程Thrad 1----23
线程Thrad 1----24
线程Thrad 1----25
线程Thrad 1----26
线程Thrad 1----27
线程Thrad 1----28
线程Thrad 1----29
线程Thrad 1----30
Over.
相关文章推荐
- JAVA多线程下,获取递增的序列号
- Java中对AtomicInteger和int值在多线程下递增操作的测试
- java多线程计数及释放
- 使用 AtomicInteger 进行计数(java多线程优化)
- 简单直观-实战体会Java多线程编程的精要 (5)
- Java 多线程入门大全
- Java 程序中的多线程
- Java 程序中的多线程
- JAVA多线程学习初步经典实例
- 编写多线程的 Java 应用程序 如何避免当前编程中最常见的问题
- [Java] 多线程的简单实现
- 简单直观-实战体会Java多线程编程的精要 (3)
- 简单直观-实战体会Java多线程编程的精要 (1)
- Java多线程程序设计
- Java多线程编程经验谈
- Java多线程程序设计
- Java程序中的多线程
- JAVA多线程实例-相机的多线程存储
- 简单直观-实战体会Java多线程编程的精要 (2)
- Java多线程程序设计