5.17 JAVA

class Computer{
int num=0;
boolean flag=false;
public synchronized void set(){
if(flag){
try{
super.wait();
}catch(InterruptedException e){
e.printStackTrace();
}
}
try{
Thread.sleep(1000);
}catch(InterruptedException e){
e.printStackTrace();
}
num++;
System.out.println("生产了第"+num+"台电脑。");
flag=true;
super.notify();
}
public synchronized void get(){
if(!flag){
try{
super.wait();
}catch(InterruptedException e){
e.printStackTrace();
}
}
try{
Thread.sleep(1000);
}catch(InterruptedException e){
e.printStackTrace();
}
System.out.println("取走了第"+num+"台电脑。");
flag=false;
super.notify();
}
}
class Customer implements Runnable{
private Computer com;

public void setCompu(Computer compu){
this.com=compu;
}
public Computer getCompu(){
return this.com;
}
public Customer(Computer com){
this.com=com;
}
public void run(){
for(int i=0;i<10;i++){
com.set();
com.get();
}
}
}
public class Test9_2 {
public static void main(String[] args) {
Computer a=new Computer();
Customer cus=new Customer(a);
new Thread(cus).start();
}
}

时间: 2024-10-19 03:49:09

5.17 JAVA的相关文章

17.Java 反射机制

1.反射的定义 反射之中包含了一个"反"的概念,所以要想解释反射就必须先从"正"开始解释,一般而言,当用户使用一个类的时候,应该先知道这个类,而后通过这个类产生实例化对象,但是"反"指的是通过对象找到类. 2.Class对象 2.1 概述 Class对象是反射的起点,可以利用类的Class对象创建类的实例(newInstance),同时提供了操作类的工具,可以获取类的详细信息,并且使用特殊的技术实现类的加载(运行时加载,在编译的时候还没有该类的c

JavaEE Tutorials (17) - Java消息服务示例

17.1JMS示例概述23317.2编写简单的JMS应用233 17.2.1启动JMS提供者234 17.2.2创建JMS受管理对象234 17.2.3构建所有简单示例235 17.2.4发送消息235 17.2.5同步接收消息238 17.2.6使用消息监听器完成异步消息传送240 17.2.7浏览队列中的消息242 17.2.8在同一个目的地运行多个消费者245 17.2.9确认消息24517.3编写更高级的JMS应用247 17.3.1使用持久订阅247 17.3.2使用本地事务24917

17 java 存在的问题(转)

java的问题: 1.性能:java的内存管理似乎比较自动化,但其实性能不是特别好.尤其是new对象的时候没有节制.在java中,有些对象构造成本很低,有些 很高.特别在UI编程的时候,大多数的UI对象其构建成本都比较高昂.如果在开发过程中没有节约意识,肯定会导致JVM不停的GC,系统表现很卡的样子, 当然,彻底的当掉可能还不会,但基本上工作已经是非常的缓慢的了. 2:引用:JAVA中其实在大量的使用对象引用,对象引用可以减少内存占用,不去构建不必要的对象.但事实上,多数程序员对引用的理解不是很

【java提高】(17)---Java 位运算符

Java 位运算符 &.|.^.~.<<.>> 以前学过有关java的运算符,不过开发了这么久也很少用过这个.现在由于开发需要,所以现在再来回顾整理下有关java的运算符. 主要运算符有以下:与(&).或(|).异或(^).取反(~).左移(<<).右移(>>). 一 与(&) 和 (|) 1.&(按位与) 规则:将两边的数转换为二进制位,然后运算最终值.运算规则即(两个为真才为真)1&1=1 , 1&0=0

17.java常用类

一.字符串相关类 1.String类 String:字符串,使用一对""引起来表示.1.String类是声明为final的,不可被继承2.String实现了Serializable接口:表示字符串是支持序列化的. 实现了Comparable接口:表示String可以比较大小3.String内部定义了final char[] value用于存储字符串数据4.String:代表不可变的字符序列.简称:不可变性. 体现:1.当对字符串重新赋值时,需要重写指定内存区域赋值,不能使用原有的val

17 Java语言基础long与float的取值范围谁大谁小

结论 float的取值范围比long大 验证 1 public class Test1_DataTypeConversion { 2 3 public static void main(String[] args) { 4 5 float f = 1.3f; 6 long l = 34; 7 // l = f; 8 // System.out.println(l); 9 //Type mismatch: cannot convert from float to long 10 f = l; 11

Java面试17|Java基础

1.final相关 (1)final在编译期的优化 只有在编译阶段能确定这个final引用赋值的内容,编译器才有可能进行编译时优化,而编译期能确定的内容只能来自于常量池中,如int,long,String等常量,不包含new String()等,也不包含方法返回值.将一个方法设成final后,编译器就可以把对那个方法的所有调用都置入"嵌入"调用里(内嵌机制),这样可以提高运行效率. (2)final可以实现可见性 被final修饰的字段在构造器中一旦初始化完成,并且构造器没有把 &qu

17.Java重构(Eclipse)

1.定义 在不改变代码行为情况下改善代码设计: 2.好处 1.改善设计: 2.让软件更加容易理解: 3.可以协助寻找bugs; 4.可以提升开发速度: 3.使用 3.1结构重构(改名字) 右键类文件,Refactor->Rename 3.2移动(移动到另外一个包) Refactor->Move 3.3修改方法的名称 选择方法右键,Refactor->Change Method Signature,调用该方法的名字都改了 3.4把方法放置在父类接口里 Refactor->Pull U

Java工程师成神之路

对JAVA的学习点总结很好的文章,小伙伴可以看看自己会哪个不会哪个然后针对性学习. 转载自Hollis 一.基础篇 1.1 JVM 1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收 http://www.jcp.org/en/jsr/detail?id=133 http://ifeve.com/jmm-faq/ 1.1.2. 了解JVM各种参数及调优 1.1.3. 学习使用Java工具 jps, jstack, jmap, jconsole, jinfo, jhat,