问答题

在程序中,DataPool是一个数据池,能存放一个血型数据,线程a和线程b负责向其中存放数据,一次只能有一个线程向其中存放数据,数据放入DataPool以后,该线程随机休眠一段时间,让另外一个线程运行,请将程序补充完整。
注意:请勿修改main()主方法和其他已有语句内容,仅在横线处填入适当语句。
class PutData extends Thread

DataPool s;
int c;
String name;
public PutData(DataPool s,String name)

this.s=s;
this.name=name;

public void run()

for(int i=0;i<10000000;i++)

c=(int)(Math.random()*10);
s.setData(c);
System.out.println(name+":push"+c);
try

______((int) (Math.random()*1000));//休眠

catch(InterruptedException e)




class DataPool

private int data=0;
public ______void setData(int d)

data=d;


public class simple

public static void main(String[] args)

DataPool s=new DataPool();
PutData a=new PutData(s,"Thread a");
PutData b=new PutData(s,"Thread b");
a.start();
b.start();

【参考答案】

sleep
synchronized
热门 试题

问答题
本程序的功能是监听对于菜单项和工具条按钮的操作。主窗口中有菜单、工具条和一个文字标签,菜单中有“文件”项,“文件”菜单中包括菜单项“新建”、“保存”、“打印”、“页面设置”和“退出”,工具条上包括按钮“新建”、“保存”、“打印”、“页面设置”和“退出”。单击任何一个菜单项或任何一个工具条按钮,文字标签都会显示哪个构件被选中。请更正题中带下划线的部分。运行结果如下图所示。 注意:不改变程序的结构,不得增行或删行。 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class advance extends JFrame private JLabel actionlnfo; public advance(String titleText) setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); super(titleText); actionInfo=new JLabel( 事件信息 ); JToolBar tb=new JTooBar(); Menu file=new Menu( 文件 ); JMenuBar mb=new JMenuBar(); mb.add(file); NewAction na=new NewAction(actionInfo); file.add(na); tb.add(na); SaveAction sa=new SaveAction(actionInfo); file.add(sa); tb.add(sa); PrintAction pta=new PrintAction(actionInfo); file.add(pra); tb.add(pra); PageSetAction psa=new PageSetAction(actionInfo); file.add(psa); tb.add(psa); ExitAction ea=new ExitAction(actionInfo); file.add(ea); tb.add(ea); setJMenuBar(mb); Container cp=getContentPane(); cp.setLayout(new BorderLayout()); cp.add(tb); cp.add(actionInfo, BorderLayout.CENTER ); setSize(350, 200); setVisible(true); public static void main(String[] args) new advance( advance ); class NewAction extends AbstractAction JLabel label; public NewAction(JLabel label) super( 新建 ); this.label=label; public void actionPerformed(ActionEvent e) label.setText( 您选择了新建 ); class SaveAction extends AbstractAction JLabel label; public SaveAction(JLabel label) super( 保存 ); this.label=label; public void actionPerformed(ActionEvent e) label.setText ( 您选择了保存 ); class printAction extends AbstractAction JLabel label; public PrintAction(JLabel label) super( 打印 ); this.label=label; public void actionPerformed(ActionEvent e) label.setText ( 您选择了打印 ); class PageSetAction extends AbstractAction JLabel label; public pageSetAction(JLabel label) super( 页面设置 ); this.label=label; public void actionPerformed(ActionEvent e) label.setText( 您选择了页面设置 ); class ExitAction extends AbstractAction JLabel label; public ExitAction(JLabel label) super( 退出 ); this.label=label; public void actionPerformed(ActionEvent e) label.setText ( 您选择了退出 );