A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 崔朋朋 中级黑马   /  2012-9-13 17:58  /  1725 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 崔朋朋 于 2012-9-13 18:00 编辑

一提到  线程同步问题 我们经常回想到      
(1)    synchronized

(2)    wait,notify,notifyAll
一般都是用来两个线程保持同步




但朋友给我说的  这道题我想了半天却  写不出来,   三个线程的同步?

题目如下:
有三个线程ID分别是A、B、C,请有多线编程实现,在屏幕上循环打印10次ABCABC…


评分

参与人数 1技术分 +1 收起 理由
黑马_许芸 + 1 赞一个!

查看全部评分

1 个回复

倒序浏览
思路如下:
创建3个线程A,B,C线程类

线程类都建立一个public static boolean flag  ,注意!!除了A线程初始化flag为ture其他都为false

在打印外面增加
wihle ( count <= 10 )
{
    if(线程对象.flag)
    {
        打印线程对象名字(比如此范例打印的是A)
        然后将线程成员flag改变:
        对象A.flag = false;
        对象B.flag = ture;
        count++;
    }
}


让3个线程并发,将以上代码加入同步代码块,ABC抢夺资源,但是由于只有A.flag为true所以,只有A可以线执行,然后接着是B,接着是C

评分

参与人数 1技术分 +1 收起 理由
黑马_许芸 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马