java,两个线程共享一个资源(标准输入流),但是我希望有一个线程能剥夺式的使用共享资源。如何实现。
ava,两个线程共享一个资源(标准输入流),但是我希望有一个线程能剥夺式的使用共享资源。如何实现。我把标准输入封装到一个对象里面,然后对访问它的方法设成synchroni...
ava,两个线程共享一个资源(标准输入流),但是我希望有一个线程能剥夺式的使用共享资源。如何实现。
我把标准输入封装到一个对象里面,然后对访问它的方法设成synchronized同步的。但是我希望线程B在占有方法的访问权的时候,如果线程A请求使用,那么剥夺B的访问权,然后赋予A访问权 展开
我把标准输入封装到一个对象里面,然后对访问它的方法设成synchronized同步的。但是我希望线程B在占有方法的访问权的时候,如果线程A请求使用,那么剥夺B的访问权,然后赋予A访问权 展开
2个回答
展开全部
用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();
}
}
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();
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |