首页新闻找找看学习计划

面试题:编写一个多线程,每个线程最多只能输出两个字符,整个程序最终输出"paratara"

0
[已解决问题] 解决于 2018-03-23 15:57

面试题:编写一个多线程,每个线程最多只能输出两个字符,整个程序最终输出"paratara".

MonkeyLu的主页 MonkeyLu | 菜鸟二级 | 园豆:214
提问于:2018-03-05 11:25
< >
分享
最佳答案
0
   Action<string> action =
           (str) =>
               Console.Write(str);

            Task.Factory.StartNew(() => action("pa"))
                .ContinueWith(antecendent => action("ra"))       
                .ContinueWith(antecendent => action("ta"))
                .ContinueWith(antecendent=>action("ra"))
                .Wait();

可以完美解决你的问题

Bluto | 菜鸟二级 |园豆:317 | 2018-03-05 16:51

a niu

博学多思 | 园豆:89 (初学一级) | 2018-03-06 09:01
其他回答(3)
0

同学,分呢

日暮青色 | 园豆:416 (菜鸟二级) | 2018-03-05 11:32

什么分

支持(0) 反对(0) MonkeyLu | 园豆:214 (菜鸟二级) | 2018-03-05 13:04
0

class Program
{
static void Main(string[] args)
{
Thread t1 = new Thread(() =>
{
Console.Write("pa");
});
Thread t2 = new Thread(() =>
{
Console.Write("ra");
});
t1.Start();
t2.Start();
Console.ReadKey();
}
}

华临天下 | 园豆:1353 (小虾三级) | 2018-03-05 14:18
0

线程同步问题,有一个不太好的方法,可以用ReentrantLock lock, Condition cond2, cond3, cond4,比如有四个线程1,2,3,4,分别打印pa,ra,ta,ra,
2,3,4线程先执行cond2.await(), cond3.await(), cond4.await(), 使线程先暂停,1线程先执行,执行完执行cond2.signal(), 然后2执行,执行完后执行cond3.signal(),然后执行3,执行完后执行cond4.signal(),然后执行4

流年飞雨 | 园豆:1928 (小虾三级) | 2018-03-05 23:43

关于ReentrantLock和Condition的使用,可以看下面
Java多线程(九)之ReentrantLock与Condition

支持(0) 反对(0) 流年飞雨 | 园豆:1928 (小虾三级) | 2018-03-05 23:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册