栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验

[问答题] 在程序中,DataPool是一个数据池,能存放一个血型数据,线程a和线程b负责向其中存放数据,一次只能有一个线程向其中存放数据,数据放入DataPool以后,该线程随机休眠一段时间,让另外

面试经验 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[问答题] 在程序中,DataPool是一个数据池,能存放一个血型数据,线程a和线程b负责向其中存放数据,一次只能有一个线程向其中存放数据,数据放入DataPool以后,该线程随机休眠一段时间,让另外

[问答题] 在程序中,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


参考答案:

sleep synchronized

问题解析:

[讲解] 本题考查知识点:线程的要领和使用、线程的同步和共享。解题思路:线程类Thread提供了一系列控制线程的方法,让线程休眠,就是其中的一种。本题中定义了PutData的两个实例a和b。PutData的run方法中,利用一个循环向DataPool中存放10000000个随机数据,每存放一个数据以后休眠一段时间,让其他线程运行。第1个空,让线程休眠使用的方法是 sleep()。该方法使线程暂停运行一段时间,在这段时间内线程不会抢占CPU资源,为其他线程的运行提供了机会。本题的第2个空是考查线程的同步和互斥的问题,当线程A和线程B都调用setData方法改变data数值时,在同一段时间内,只能允许一个线程进行操作,这就需要两个线程之间互斥访问setData()方法。synchronized允许线程独占地存取对象,当 synchronized声明的程序块已经被一个线程占用,其他线程就必须等待该线程放弃这个程序块的控制权以后才能对其进行访问。因此,第2个空需要填写synchronized。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/254781.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号