您现在的位置: 爱51代码网 >> 范文 >> 文章正文
方法getQueueSize为什么是synchronized

方法getQueueSize为什么是synchronized

直接上代码,网上看来的
private static int queueDeep = 4;

public void createThreadPool()
{

ThreadPoolExecutor tpe = new ThreadPoolExecutor(2, 4, 3, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(queueDeep), new ThreadPoolExecutor.DiscardOldestPolicy());

// 向线程池中添加 10 个任务
for (int i = 0; i < 10; i++)
{
try
{
Thread.sleep(1);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
while (getQueueSize(tpe.getQueue()) >= queueDeep)
{
System.out.println("队列已满,等3秒再添加任务");
try
{
Thread.sleep(3000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
TaskThreadPool ttp = new TaskThreadPool(i);
System.out.println("put i:" + i);
tpe.execute(ttp);
}

tpe.shutdown();
}

private synchronized int getQueueSize(Queue queue)
{

return queue.size();
}

public static void main(String[] args)
{

ThreadPoolExecutorTest test = new ThreadPoolExecutorTest();
test.createThreadPool();
}
我有一点不明白,方法getQueueSize为什么是synchronized ?这里只有主线程访问了createThreadPool()方法,不是多个线程在访问,何必要在一个方法上加synchronized 这个呢?
先撇开这个private

get的时候,synchronized针对的 是queue 对象!

意思就是:我查这个队列多长的这个当儿,不允许队列增加、或者 减少元素。

数据库你懂吧?

就是你select count(1) from table 的时候,吧这个表Lock起来,不允许其他的人update \insert\delete  这个table
免得你select的结果与实际的物理数据有区别。 就这意思。 
 
是需要加的,你的这个queue其实是有其他的线程在操作的,就是线程池框架里面,执行一个任务,都会从queue中弹出一个任务。

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    undefined reference timer_crea
    linux文件/usr/lib破坏了,还原后
    linux上运行system函数时,print
    Failed to open eth0
    android手机无法与eclipse或电脑
    C/C++洗牌算法源代码
    servlet技术实现用户名唯一的验证
    E-business suite system servic
    ZOJ 3700 Ever Dream 文章中单词
    TortoiseGit和msysGit安装及使用
    ZOJ 3700 Ever Dream 文章中单词
    TortoiseGit和msysGit安装及使用
    sharepoint 2010 获取用户信息Us
    mysql主从同步延迟方案解决的学习
    生日旅行总结
    中小板生日快乐随感
    送生日快乐桑葚乳酪小蛋糕
    写给女儿的生日快乐
    总分公司财务核算
    恢复使用繁体字可行性研究报告
    Unable to load configurati
    JAVA-List对象某个字段去重的
    java.lang.NoClassDefFoundE
    java从.dat文件中读取数据
    JDWP Unable to get JNI 1.2
    富文本控件怎么把数据存放到
    Unresolved compilation pro
    正则表达式如何解析JSON
    Ajax异步调用后台 实现简单的
    定时将SQL SERVER2000中一个
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |