当前位置: 首页 > news >正文

网站建设宣传语怎么写/国外免费ip地址

网站建设宣传语怎么写,国外免费ip地址,网页的功能有哪些方面,南昌建网站ReentrantLock和内部锁的性能对比 ReentrantLock是jdk5引入的新的锁机制,它与内部锁(synchronize) 相同的并发性和内存语义,比如可重入加锁语义。在中等或者更高负荷下,ReentrantLock有更好的性能,并且…

ReentrantLock和内部锁的性能对比 
    ReentrantLock是jdk5引入的新的锁机制,它与内部锁(synchronize) 相同的并发性和内存语义,比如可重入加锁语义。在中等或者更高负荷下,ReentrantLock有更好的性能,并且拥有可轮询和可定时的请求锁等高级功能。这个程序简单对比了ReentrantLock公平锁、ReentrantLock非公平锁以及内部锁的性能,从结果上看,非公平的ReentrantLock表现最好。内部锁也仅仅是实现统计意义上的公平,结果也比公平的ReentrantLock好上很多。这个程序仅仅是计数,启动N个线程,对同一个Counter进行递增,显然,这个递增操作需要同步以保证原子性,采用不同的锁来实现同步,然后查看结果。 
Counter接口: 

1
2
3
4
5
package net.rubyeye.concurrency.chapter13; 
public interface Counter { 
    public long getValue(); 
    public void increment(); 
}

然后,首先使用我们熟悉的synchronize来实现同步: 

1
2
3
4
5
6
7
8
9
10
package net.rubyeye.concurrency.chapter13; 
public class SynchronizeBenchmark implements Counter { 
    private long count = 0
    public long getValue() { 
        return count; 
    
    public synchronized void increment() { 
        count++; 
    
}

采用ReentrantLock的版本,切记要在finally中释放锁,这是与synchronize使用方式最大的不同,内部锁jvm会自动帮你释放锁,而ReentrantLock需要你自己来处理。 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package net.rubyeye.concurrency.chapter13; 
import java.util.concurrent.locks.Lock; 
import java.util.concurrent.locks.ReentrantLock; 
public class ReentrantLockBeanchmark implements Counter { 
    private volatile long count = 0
    private Lock lock; 
    public ReentrantLockBeanchmark() { 
        // 使用非公平锁,true就是公平锁 
        lock = new ReentrantLock(false); 
    
    public long getValue() { 
        // TODO Auto-generated method stub 
        return count; 
    
    public void increment() { 
        lock.lock(); 
        try 
            count++; 
        finally 
            lock.unlock(); 
        
    
}



    写一个测试程序,使用CyclicBarrier来等待所有任务线程创建完毕以及所有任务线程计算完成,清单如下: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package net.rubyeye.concurrency.chapter13; 
import java.util.concurrent.CyclicBarrier; 
public class BenchmarkTest { 
    private Counter counter; 
    private CyclicBarrier barrier; 
    private int threadNum; 
    public BenchmarkTest(Counter counter, int threadNum) { 
        this.counter = counter; 
        barrier = new CyclicBarrier(threadNum + 1); //关卡计数=线程数+1 
        this.threadNum = threadNum; 
    
    public static void main(String args[]) { 
        new BenchmarkTest(new SynchronizeBenchmark(), 5000).test(); 
        //new BenchmarkTest(new ReentrantLockBeanchmark(), 5000).test(); 
        //new BenchmarkTest(new ReentrantLockBeanchmark(), 5000).test();   
    
    public void test() { 
        try 
            for (int i = 0; i < threadNum; i++) { 
                new TestThread(counter).start(); 
            
            long start = System.currentTimeMillis(); 
            barrier.await(); // 等待所有任务线程创建 
            barrier.await(); // 等待所有任务计算完成 
            long end = System.currentTimeMillis(); 
            System.out.println("count value:" + counter.getValue()); 
            System.out.println("花费时间:" + (end - start) + "毫秒"); 
        catch (Exception e) { 
            throw new RuntimeException(e); 
        
    
    class TestThread extends Thread { 
        private Counter counter; 
        public TestThread(final Counter counter) { 
            this.counter = counter; 
        
        public void run() { 
            try 
                barrier.await(); 
                for (int i = 0; i < 100; i++) 
                    counter.increment(); 
                barrier.await(); 
            catch (Exception e) { 
                throw new RuntimeException(e); 
            
        
    
}

分别测试一下, 

将启动的线程数限定为500,结果为: 
公平ReentrantLock:      210 毫秒 
非公平ReentrantLock :   39  毫秒 
内部锁:                          39 毫秒 

将启动的线程数限定为1000,结果为: 
公平ReentrantLock:      640 毫秒 
非公平ReentrantLock :   81 毫秒 
内部锁:                           60 毫秒 

线程数不变,test方法中的循环增加到1000次,结果为: 
公平ReentrantLock:      16715 毫秒 
非公平ReentrantLock :   168 毫秒 
内部锁:                           639  毫秒 

将启动的线程数增加到2000,结果为: 
公平ReentrantLock:      1100 毫秒 
非公平ReentrantLock:   125 毫秒 
内部锁:                           130 毫秒 

将启动的线程数增加到3000,结果为: 
公平ReentrantLock:      2461 毫秒 
非公平ReentrantLock:   254 毫秒 
内部锁:                           307 毫秒 

启动5000个线程,结果如下: 
公平ReentrantLock:      6154  毫秒 
非公平ReentrantLock:   623   毫秒 
内部锁:                           720 毫秒 

非公平ReentrantLock和内部锁的差距,在jdk6上应该缩小了,据说jdk6的内部锁机制进行了调整。 

特别说明:尊重作者的劳动成果,转载请注明出处哦~~~http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytpo8
http://www.lbrq.cn/news/1612675.html

相关文章:

  • 空间网站链接怎么做/爱站网查询
  • 新网站如何做seo推广/做一个微信小程序需要多少钱
  • 做网站营销怎么去推广/江苏搜索引擎优化
  • 大连网站建设选网龙/云优化seo软件
  • 汉川市城乡建设局网站/青岛seo招聘
  • 山东泰安特产/优化关键词排名哪家好
  • 北京住房建设委员会官方网站/百度关键词排名代发
  • 宝塔做两个网站6/宁波关键词优化品牌
  • 网站建设系统 招标/品牌宣传活动策划方案
  • 上海网站开发制作公司/seo排名
  • 旅游类网站怎么做/南京seo公司
  • 贵德网站建设/推广渠道有哪些
  • 个人网站要备案么/外贸推广有哪些好的方式
  • 一家做公司点评网站/一份完整的品牌策划方案
  • 网站兼容9/优化设计答案大全英语
  • 网站百度抓取/cilimao磁力猫最新版地址
  • vs2010可以做动态网站吗/网站优化推广seo公司
  • 武进网站建设机构/广东seo
  • 合肥专业手机网站制作价格/上海自动seo
  • 手机芒果tv2016旧版/seo云优化如何
  • 上传网站到二级域名/电商运营培训班
  • 企查查企业信息查询网站/seo标签怎么优化
  • 商业空间设计的概念/赣州seo外包怎么收费
  • 建设银行短信带网站/网络优化包括
  • 安徽建设工程有限公司官网/搜狗seo
  • 网站建设后续的费用/数据分析一般用什么软件
  • 国外b站浏览器免费版/新乡搜索引擎优化
  • wordpress seo神器/soe搜索优化
  • 用asp做网站怎么美观/模板建站代理
  • 开发公司网站建设/免费收录链接网
  • 谷歌开源Agent框架ADK快速入门
  • 面经——电子电路技术知识详解
  • Autosar Nm-网管报文PNC停发后无法休眠问题排查
  • Python从入门到精通——第五章 列表与元组
  • 电商前端Nginx访问日志收集分析实战
  • 【运维基础】Linux 进程调度管理