( 31 ) 为了支持压栈线程与弹栈线程之间的交互与同步 , 在程序的下划线处依次填入的语句是public

题目

( 31 ) 为了支持压栈线程与弹栈线程之间的交互与同步 , 在程序的下划线处依次填入的语句是

public class IntStack{

private int idx=0;

private int[] data=new int[8];

public void push(int i){

data[idx]=i;

idx++;

}

__________

......

}

A ) synchronized()

notify()

B ) synchronized()

this.wait()

C ) synchronized()

this.notify()

D ) synchronized()

sleep()

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

为了支持压栈线程与弹栈线程之间的交互与同步,应在下划线处填入的选项是

pubIis class StackTest{

private int idx=0;

private int[]data=new int[8];

public void push(int i){

synchronized(this){

______;

data[idx]=i;

idx++;

}

}

……

}

A.this.notify()

B.interrupt()

C.this .wait()

D.sleep()


正确答案:D

第2题:

( 11 )在下列程序的下划线处,填入适当语句使程序能正确执行并输出异常栈信息。

public class ThrowableException{

public static void main(String args[]){

try{

throw new Throwable(" 这里是本人定义的异常 ");

}catch(Throwable e){

System.out.println("Caught Throwable");

System.out.println("e.getMessage(): "+e.getMessage());

System.out.println("e.toString(): "+e.toString());

System.out.println("e.printStackTrace(): ");

【 11 】 ;}}}


正确答案:

第3题:

为了支持压栈线程与弹栈线程之间的交互与同步,在程序的下划线处依次填入的语句是( )。 publicclass IntStack{ privateintidx=O; privateint[]data=newint[8]; public______voidpush(inti){ data[idx]=i; idx++; }

A.synchronized()

B.synchronized notify() this.wait()

C.synchronized

D.Serializable this.notify() sleep()


正确答案:B
解析:在Synchronized块中等待共享数据的状态改变时调用wait()方法,这样该线程等待并暂时释放共享数据对象的锁。

第4题:

下列程序的运行结果是______。 class A implements Runnable { int a; iht i = 2; A(int x) { a = x; } public void run() { while(i > 0) { System.out.println("线程" + a); i--; } } } public class Testl3 { public static void main(String[] args) { Thread a1 = new Thread(new A(1)); Thread a2 = new Thread(new A(2)); a1.start(); a2.start(); } }

A.线程1 线程1 线程2 线程2

B.线程1 线程2

C.线程1 线程2 线程1 线程2

D.线程1 线程1 线程1 线程1


正确答案:A
解析:类A实现了Runnable接口,并且通过类的构造函数A(int x)传递整型参数给对象作为线程的编号。在run()线程体内,实现打印两个字符串。在main()方法中,用A类的2个对象创建了a1和a2两个线程,当a1和a2开始执行时,从A类的run()方法开始执行。

第5题:

下面是一个栈类的模板,其中push函数将元素i压入栈顶,pop函数弹出栈顶元素。栈初始为空,top值为0,栈顶元素在stack[top-1]中,在下面横线处填上适当的语句,完成栈类模板的定义。

template<class t>

class Tstack

{

enum{size=1000};

T stack[size]

int top;

public:

Tsack():top(0){}

void push(const T&i){

if(top<size)

stack[top++]=i;

}

T pop()

{

if(top==O)exit(1);//栈空时终止运行

retum【 】;

}

};


正确答案:stack[--top]
stack[--top] 解析:++/--运算符;注意栈顶元素在stack[top-1]中。

第6题:

( 18 )下列对线程属性的描述中,哪些是正确的?

Ⅰ .每个线程有一个标识符

Ⅱ .每个线程需要自己执行时的寄存器和栈等现场信息

Ⅲ . 每 个线程有各自的地址空间

Ⅳ . 线程是处理器调度的独立单元

Ⅴ .线程是有生命周期的

A )仅 Ⅰ 、 Ⅱ 和 Ⅲ

B ) 仅 Ⅱ 、 Ⅲ 和 Ⅳ

C )仅 Ⅰ 、 Ⅱ 、 Ⅲ 和 Ⅴ

D )仅 Ⅱ 、 Ⅲ 、 Ⅳ 和 Ⅴ


正确答案:C

第7题:

下列对线程属性的描述中,哪些是正确的?

Ⅰ.每个线程有一个标识符

Ⅱ.每个线程需要自己执行时的寄存器和栈等现场信息

Ⅲ.每个线程有各自的地址空间

Ⅳ.线程是处理器调度的独立单元

Ⅳ.线程是有生命周期的

A.仅Ⅰ、Ⅱ和Ⅲ

B.仅Ⅱ、Ⅲ和Ⅳ

C.仅Ⅰ、Ⅱ、Ⅳ和Ⅴ

D.仅Ⅱ、Ⅲ、Ⅳ和Ⅴ


正确答案:C
解析:每个进程有各自独立的地址空间,而非线程。每个线程有一个唯一的标识符与它绑定,线程从创建到消亡的过程称为线程的生命周期。

第8题:

现代操作系统中,引入线程的主要目的是

A.提高并发度

B.每个线程拥有独立的地址空间

C.减少通信开销

D.线程之间的切换时间短

E.每个线程可以拥有独立的栈


正确答案:ACDE

第9题:

为了支持压栈线程与弹栈线程之间的交互与同步,在下画线处依次填入的语句是 public class IntStack { private int idx=0; private int[]data=new int[8]; public ______ void push(int i) { data[idx]=i; idx++; ______ } … }

A.synchronized() notify()

B.synchronized() this.wait()

C.synchronized() this.notify()

D.synchronized() sleep()


正确答案:C
解析:一个程序中单独的、并发的线程对同一个对象进行访问的代码段,称为临界区。在Java语言中,临界区可以是一个语句块或是一个方法,并且用synchronized关键字标识。本程序中push()方法即为临界区,所以需要用synchronized关键字标识。this.notify()把当前堆栈对象的wait pool中的一个线程释放到lock pool,等待该堆栈的锁以便运行。

第10题:

为了支持压栈线程与弹栈线程之间的交互与同步,应在下画线处填入的选项是( )。

A.this.notify( )

B.interrupt( )

C.this.wait( )

D.sleep( )


正确答案:A
当-个线程使用的同步方法中用到某个变量,而此时有需要其他线程修改后才能符合本线程的需要,那么可以使用wait()方法,wait()方法的作用是使本线程等待,并允许其他线程使用此同步方法。当其他线程使用完后应使用notify()或者notifyAll()方法允许其他线程使用此同步方法。Interrupt()方法的作用是在run()方法执行完之前就消灭此线程,而sleep()方法的作用是延迟-段时间后执行。所以本题是为了支持压栈线程与弹栈线程之间的交互与同步,所以选A。

更多相关问题