java多线程递增计数

转载 2016年08月31日 16:42:57

有多个线程,每个线程随机访问一个变量,无论谁获取访问权,变量都会递增,当变量值到达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.

解决Java多线程并发的计数器问题

import java.util.concurrent.atomic.AtomicInteger; public class Counter { public static int count =...
  • yansong_8686
  • yansong_8686
  • 2015年12月22日 01:07
  • 4879

多线程计数,怎么保持计数准确

首先使用设计模式中的单件模式,防止多次初始化对象,造成访问空间的不一致。 计数处要加lock,将其他线程计数暂时阻塞,保证计数的正确性。 如果要想实时计数实时输出,可以将计数和输出处一并lock处...
  • ggbb190
  • ggbb190
  • 2014年01月08日 16:21
  • 1042

多线程计数,怎么保持计数准确

  • 2014年01月08日 16:19
  • 28KB
  • 下载

java多线程代码行数计数器

  • 2008年09月27日 14:10
  • 88KB
  • 下载

一个使用线程计数器的例子

需求描述:主线程挂起,作为守护线程。线程池里,每当一个线程结束后,计数器减一。当线程池里所有线程都结束后,通知主线程,使得主线程可以继续。 import java.util.concurre...
  • Longerandlonger
  • Longerandlonger
  • 2012年12月10日 10:25
  • 4253

Java线程安全的计数器

一、多线程以及线程安全           java线程安全就是指控制多个线程对某个资源的有序访问或修改。这涉及两个很重要的概念:java的内存模型和java的线程同步机制。       1.java...
  • Yolanda_NuoNuo
  • Yolanda_NuoNuo
  • 2014年08月27日 10:04
  • 7997

Android中AsyncTask实现多线程计数

  • 2012年11月06日 15:35
  • 628KB
  • 下载

多线程安全计数器

在做性能测试时,需要统计运行一段时间内库使用锁的次数、获取时间戳的次数等。 在做这些库范围内的某个动作的次数统计时,如果库内是多线程且动作在多个线程内都出现。 可以使用下面的多线程安全的计...
  • u012421852
  • u012421852
  • 2016年05月06日 22:36
  • 459

Java多线程—Thread统计完数的个数

import java.math.*; public class bb extends Thread{ public long start; public long end; ...
  • LY_624
  • LY_624
  • 2016年12月12日 12:07
  • 1427

java线程池 与 同步计数器CountDownLatch的使用。

concurrent包里面的CountDownLatch其实可以把它看作一个计数器,只不过这个计数器的操作是原子操作,同时只能有一个线程去操作这个计数器,也就是同时只能有一个线程去减这个计数器里面的值...
  • is_zhoufeng
  • is_zhoufeng
  • 2012年11月06日 00:14
  • 8764
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java多线程递增计数
举报原因:
原因补充:

(最多只允许输入30个字)