java,两个线程共享一个资源(标准输入流),但是我希望有一个线程能剥夺式的使用共享资源。如何实现。

ava,两个线程共享一个资源(标准输入流),但是我希望有一个线程能剥夺式的使用共享资源。如何实现。我把标准输入封装到一个对象里面,然后对访问它的方法设成synchroni... ava,两个线程共享一个资源(标准输入流),但是我希望有一个线程能剥夺式的使用共享资源。如何实现。
我把标准输入封装到一个对象里面,然后对访问它的方法设成synchronized同步的。但是我希望线程B在占有方法的访问权的时候,如果线程A请求使用,那么剥夺B的访问权,然后赋予A访问权
展开
 我来答
cfwzw312
2010-01-28 · TA获得超过655个赞
知道小有建树答主
回答量:358
采纳率:0%
帮助的人:193万
展开全部
简单一点的做法就是在共享对象中设一下boolean属性,作为一个标记。当A请求时,把这个值改变一下,线程B在调用synchronized方法时要不断检查这个标记是否已改变,然后做再做yield操作.
我非梁山伯
2010-01-28 · TA获得超过148个赞
知道小有建树答主
回答量:164
采纳率:0%
帮助的人:103万
展开全部
用yield()可以把运行权让出来,但没规定让给谁。只有两个线程的话就是让给另一个了 下面是例子 参考一下
class ThreadA extends Thread{
synchronized String rumA(){
return "this is Thread A";
}
public void run(){
for(int i=0;i<9;i++){
System.out.println(rumA()+i);
yield();
}
}
}
class ThreadB extends Thread{
synchronized String rumB(){
return "this is Thread B";
}
public void run(){
for(int i=0;i<9;i++){
System.out.println(rumB()+i);
}
}
}
public class Yield{
public static void main(String[] args){
ThreadA a=new ThreadA();
ThreadB b=new ThreadB();
a.start();
b.start();
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式