it十八掌作业_java基础第九天_多线程自动拆装箱

     2022-04-24     679

关键词:

1.蜜蜂和熊的生产消费关系,熊在蜂蜜满10斤吃掉。蜜蜂一次生产一斤蜂蜜,且蜜蜂生成一斤蜂蜜花费的时间是10s。

  十只蜜蜂和两只熊。

   class Bee extends Thread{

private int bag;

private static final int BAG_MAX = 20;

private static final int ONCE = 5;

private static final int TIME = 10 ;

private Box box;

private String name;

public Bee(Box box, String name) {

super();

this.box = box;

this.name = name;

}

public void run()

{

//满足放蜂蜜的条件

while (true) {

//如果不足 5

if(bag >= 0 && bag < 5){

bag ++;

try {

System.out.println(name + "加蜂蜜,数量" + bag);

Thread.sleep(10);

} catch (Exception e) {

// TODO: handle exception

}

if (bag >= 5) {

synchronized (box) {

int cap = box.capacity;

if (cap == Box.MAX) {

System.out.println("蜂蜜满了");

try {

box.wait(); // 

} catch (Exception e) {

// TODO: handle exception

}

}//未满

else {

//剩余空间

int remain = Box.MAX - cap ;

if (bag >= remain) {

box.capacity = Box.MAX;

bag = bag - remain;

box.notifyAll();

}

else {

box.capacity = box.capacity + bag;

bag = 0;

System.out.println(name + "加蜂蜜,容器中的数量为" + box.capacity);

}

}

}

}

}

}

}



 class Box {

public static final int MAX = 20;

public int capacity = 0 ;

}




 class Bear extends Thread {

private Box box;

private String name;

public Bear(Box box, String name) {

super();

this.box = box;

this.name = name;

}

public void run()

{

while (true)

{

synchronized (box) {

if (box.capacity > 10)

{

System.out.println("总量为:"+box.capacity);

box.capacity = box.capacity - 10;

System.out.println(name + "吃了,剩余 "+box.capacity);

box.notifyAll();

}else {

try {

System.out.println(name + "等着急了");

box.wait();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

}

}



 class App2 {


public static void main(String[] args) {

// TODO Auto-generated method stub

Box box = new Box();

Bee b1 = new Bee(box,"b1");

Bee b2 = new Bee(box,"b2");

Bee b3 = new Bee(box,"b3");

Bee b4 = new Bee(box,"b4");

Bee b5 = new Bee(box,"b5");

Bee b6 = new Bee(box,"b6");

Bee b7 = new Bee(box,"b7");

Bee b8 = new Bee(box,"b8");

Bee b9 = new Bee(box,"b9");

Bee b10 = new Bee(box,"b10");

Bear bear = new Bear(box,"熊大");

Bear bear2 = new Bear(box,"熊二");

b1.start();

b2.start();

b3.start();

b4.start();

b5.start();

b6.start();

b7.start();

b8.start();

b9.start();

b10.start();

bear.start();

bear2.start();

}


}


2.取出两个字符串中最大的公共子串。

public class StringDemo {


public static void main(String[] args) {

// TODO Auto-generated method stub

String str1 = "abcasdfasdfd";

String str2 = "a13asdfbc3dsadfasd23defsdfs";

int min = 0;

int max = 0;


int len1 = str1.length();

int len2 = str2.length();

//比较连个字符串的长度。

String minStr = len1 <= len2 ? str1 : str2;

String maxStr = len1 > len2 ? str1 : str2;

String targetStr = null;

//循环 从字符串长度小的最大的子串开始

for (int i = minStr.length(); i >= 1; i--) { // 取出子字符串

for (int j = 0; j < minStr.length() - i+1; j++) {

targetStr = minStr.substring(j, j + i);


// 比较子串 和 最大字符串是否匹配

for (int k = 0; k < maxStr.length() - targetStr.length()+1; k++) {

String tmp = maxStr.substring(k, k + targetStr.length());

System.out.println("循环第 " + k + "次");

if (maxStr.substring(k, k + targetStr.length()).equals(targetStr)) {

System.out.println(" 最大子字符串:" + targetStr);

System.exit(-1);

}

}

}

}


}


}



3.StringBuffer是线程安全的,StringBuilder不是线程安全。单线程访问情况下,性能是否一致?

在单线程访问的情况下,性能是一样的。

只有在多线程并发的情况下,StringBuilder的性能高于StringBuffer,

因为StringBuffer有加Synchronized关键字,每次只允许一个线程访问,而StringBuilder是可以同时访问的。


it十八掌作业_java基础第八天_多线程

感觉大家对IT十八掌大数据的支持,今天的作业如下1.5辆汽车过山洞,依次经过山洞。每辆车通过山洞花费10秒,使用多线程实现。2.用多线程模拟蜜蜂和熊的关系。  蜜蜂是生产者,熊是消费者。蜜蜂生产蜂蜜是累加的过... 查看详情

it十八掌作业_java基础第八天_多线程

1.5辆汽车过山洞,依次经过山洞。每辆车通过山洞花费10秒,使用多线程实现。2.用多线程模拟蜜蜂和熊的关系。  蜜蜂是生产者,熊是消费者。蜜蜂生产蜂蜜是累加的过程,熊吃蜂蜜是批量(满100吃掉)的过程。  ... 查看详情

it十八掌作业_java基础第十七天_qq案例

感谢大家对IT十八掌大数据的支持,今天的作业如下:按照老师讲的,自己练习项目 查看详情

it十八掌作业_java基础第十天_集合

1、remove(intindex); //删除指定位置的元素2、remove(Objecto); //删除指定对象,考查删除对象的规则是什么?3、removeAll(Collectioncol);//删除指定集合中的所有元素。4、contains(Objecto); //是否包含5、contains(Collectioncol);//是否包含集合。-------... 查看详情

it十八掌作业_java基础第十天_集合

Student :--------------    判断学生类对象内容是否相同,重写equals方法。需要三个条件同时满足name + age + sex都相同才相同。练习Vector向量类。---------------------作业:-------------   &nb 查看详情

it十八掌作业_java基础第25天_nio

感谢大家对IT十八掌大数据的支持,今天的作业如下:1.将NIO中的Socket通信过程使用图形进行描述和说明。2.画图说明Runtimedataarea的内部结构。3.阐述class的类加载过程。4.反射和内省的异同,以及各自的优缺点。5.阐述jvm中从堆和... 查看详情

it十八掌作业_java基础第三天_数组

1.定义一个函数,函数功能是动态提取int[]中元素的最大值。classArrayDemo{ publicstaticvoidmain(String[]args) { int[]arr=newint[]{5,6,9,1,4}; intmaxNumber=getMaxNumber(arr); System.out.println("数组中的最大数为:"+maxNumber); } pu 查看详情

it十八掌作业_java基础第十四天_io

感谢大家对IT十八掌大数据的支持,今天的作业如下:1.定义函数,输出一个byte的二进制字符串。2.定义工具类,完成int数和byte[]之间的相互转换。3.阐述IO流。输入输出流字符字节流缓冲和非缓冲流转换流.4.通过File对象打印输出... 查看详情

it十八掌作业_java基础第十六天_gui/socket

感谢大家对IT十八掌大数据的支持,今天的作业如下:参照视频,编写出聊天程序。知识点分析:Socket+GUI +IO= 简版QQ------------------------------1.GUI2.SocketServerSocket:port+accept Socketsock =accept();//更新窗口//接收client的数据ne... 查看详情

it十八掌作业_java基础第十二天_集合

1.描述HashMap内部实现原理。2.描述Hashset和HashMap的区别。3.年级的集合使用Map的嵌套实现。 10班,每个班50人。4.编程实现文本文件的复制。合理设计程序,得到缓冲区的大小的高效区间。 提示缓冲区设置1k开始,不超过10M... 查看详情

it十八掌作业_java基础第十五天_io串行化/深度复制

感谢大家对IT十八掌大数据的支持,今天的作业如下:1.使用RandomAccessFile实现文件合成。2.使用java中的串行化技术实现对象图(100只猫Cat集合,但是Cat的owner不需要串行化)的深度复制。3.阐述串行化的过程,应用场景,串行ID的用... 查看详情

it十八掌作业_java基础第23天_数据库连接池反射

感谢大家对IT十八掌大数据的支持,今天的作业如下:1.属性赋值-------------1.Man{50+}Manman=newMan();man.setXxx1(...);man.setXxx2(...);...50Mancopy=newMan();copy=man;copy.setXxx1(man.getXxx1());copy.setXxx1(man.getXxx1());copy.setX 查看详情

it十八掌作业_java基础第十一天_集合

1.定义罪犯Criminal类,height(身高)/weight(体重)/blood(血型)/home(籍贯)属性。 重写hashcode和equals,使用四个属性的组合进行实现。 创建HashSet集合,里面存放20个Criminal对象,其中O型血2人,A型血3人,B型血4人,AB型血1人,其余血型不详... 查看详情

it十八掌作业_java基础第十六天_gui/socket

参照视频,编写出聊天程序。知识点分析:Socket+GUI +IO= 简版QQ------------------------------1.GUI2.SocketServerSocket:port+accept Socketsock =accept();//更新窗口//接收client的数据newThread(){run(){sock..getInputS 查看详情

it十八掌作业_java基础第三天_数组

1.定义一个函数,函数功能是动态提取int[]中元素的最大值。2.定义一个函数,从数组中查询指定的元素首次出现的位置。3.定义函数,完成冒泡排序,大数下沉。4.折半查找。6.定义一个函数,实现矩阵的转置.arr[i][j]==arr[j][i];//前... 查看详情

it十八掌作业_java基础第十三天_i

1.阐述BufferedReader和BufferedWriter的工作原理, 是否缓冲区读写器的性能恒大于非缓冲区读写器的性能,为什么,请举例说明?  2.阐述HashSet与HashMap的异同。3.Charset类操作:isSupport() 3.1)通过该类验证平台是否支持一下字符... 查看详情

it十八掌作业_java基础第十三天_io

1.阐述BufferedReader和BufferedWriter的工作原理, 是否缓冲区读写器的性能恒大于非缓冲区读写器的性能,为什么,请举例说明?2.阐述HashSet与HashMap的异同。3.Charset类操作:isSupport()  3.1)通过该类验证平台是否支持一下字符... 查看详情

it十八掌作业_java基础第十四天_io

1.定义函数,输出一个byte的二进制字符串。2.定义工具类,完成int数和byte[]之间的相互转换。3.阐述IO流。  输入输出流  字符字节流  缓冲和非缓冲流  转换流.4.通过File对象打印输出指定路径下的整... 查看详情