为了支持压栈线程与弹栈线程之间的交互与同步,应在下画线处填入的选项是()。 public class Sta
A.this.notify
B.interrupt
C.this.wait
D.sleep
A.this.notify
B.interrupt
C.this.wait
D.sleep
为了支持压栈线程与弹栈线程之间的交互与同步,在下画线处依次填入的语句是 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()
(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()
A.synchronized notify
B.synchronized this.wait
C.synchronized this.notify
D.Serializable sleep
A.synchronized notify
B.synchronized this.wait
C.synchronized this.notify
D.Serializable sleep
A.进程不能成为调度的单位
B.线程切换时可能会引起进程切换
C.线程可以没有栈
D.线程之所以切换快是因为TCB比PCB尺寸小
A.用户级线程没有TCB
B.用户级线程没有栈
C.用户级线程没有PC指针
D.CPU调度是在内核中的,而内核不能感知到用户级线程
A.仅Ⅰ、Ⅱ和Ⅲ
B.仅Ⅱ、Ⅲ和Ⅳ
C.仅Ⅰ、Ⅱ、Ⅳ和Ⅴ
D.仅Ⅱ、Ⅲ、Ⅳ和Ⅴ
阅读以下应用说明、图和Java代码,根据要求回答问题1至问题5。
【说明】
Stack类是java. ntil包中专门用来实现栈的工具类。以下Java程序是一个不使用库函数而实现字符串反转的程序。例如,输入:123456,则输出:654321:输入:asdfeg,则输出:gefdsa。
【Java程序】
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class UseStack extends Applet implements ActionListener
{ Stack MyStack;
Label prompt=new Label("输入要反转字符:");
Button pushBtn=new Button("压栈");
Button popBtn=new Button("弹栈"); //反转
TextField input=new TextField(5);
int[] DrawStack =new int[10]; //记录堆栈中数据
int[] PoppedOut=new int[20]; //记录被弹出的数据
int StackCnt=0; //记录模拟堆栈的数组中的数据个数
String msg=" ";
public void init()
{ MyStack=new Stack();
add(prompt);
add(input);
add(pushBtn);
add(popBtn);
pushBtn.addActionListener(this);
(1)
}
public void paint(Graphics g)
{ for (int i=10; i<StackCnt; i++) //模拟显示堆栈内部的数据排列情况
{ g.drawRect(50,200-i*20,80,20);
g.drawString(Integer.toString(DrawStack[i]),80,215-i*20);
}
for (int i=0;(2) ) //显示被弹出的数据
g.drawString(Integer.toString(PoppedOut[i]),200+i*20,100);
g.drawString("堆栈",70,236);
g.drawString("栈底",135,225);
g.drawString("栈顶",160,225-StackCnt*20);
g.drawString(msg,200,140);
}
public void actionPerformed((3) )
{ if (e.getAct ionCommand () == "压栈") //压栈操作
{ if(StackCnt<10)
{ MyStack.push(new Integer((4) ));
DrawStack[StackCnt++]=Integer.parseInt(input.getText() );
input.setText (" ");
}
else
msg="输入数据过多,请先弹栈!"
}
else if (e.getActionCommand () == "弹栈") //弹栈操作
{ if((5) )
{ StackCnt--;
PoppedOut[PopCnt++]=[(Integer)(MyStack.pop())).intValue();
}
else
msg="堆栈已空,不能再弹栈!";
}
repaint();
}
}