初级问题,高手解答

mx1029 2003-10-27 10:06:37
小弟是java的初学者。大家能告诉我vetor和synchronized到底怎么用么?谢谢。
...全文
29 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
mx1029 2003-10-31
  • 打赏
  • 举报
回复
我把贴结了,希望你看到后加我为好友。
我的qq是7143324
邮箱:mx1029@yahoo.com.cn
谢谢了。:)
mx1029 2003-10-31
  • 打赏
  • 举报
回复
哦。差点忘了,lahu0578你有关于这个问题的具体文档么,或者推荐给小弟几本好书。我想好好研究一下它们的用法。我还只是个初学者。
mx1029 2003-10-31
  • 打赏
  • 举报
回复
非常感谢大家,特别是lahu0578,马上送分
lahu0578 2003-10-31
  • 打赏
  • 举报
回复
上边我发的关于synchronized的程序是同步的典型程序,操作系统里也讲过。
下边是vector的用法:
package store.util;

import java.util.*;

public class ShoppingCart
{
private Vector cart;

public ShoppingCart()
{
cart = new Vector(2,2);
}

public Item getItem(int i)
{
return (Item)cart.get(i);
}

public void addItem(Item item)
{
cart.add(item);
}

public int getSize()
{
return cart.size();
}
}
zhengcuixia198132 2003-10-30
  • 打赏
  • 举报
回复
可以在举个vector的例子吗?
yangtaylor 2003-10-30
  • 打赏
  • 举报
回复
<<thinking in java>>,jdk文档,自选一本。
lahu0578 2003-10-30
  • 打赏
  • 举报
回复
class Pizza
{
private int pizzaNum;

public Pizza(int num)
{
this.pizzaNum = num;
}

public synchronized void produce()
{
while (pizzaNum >= 10)
{
try
{
wait();
}
catch (Exception e) {}
}
pizzaNum++;
System.out.println("Produce a new pizza, current pizza num: "+pizzaNum);
notifyAll();
try
{
Thread.sleep(1000);
}
catch(Exception e){}
}
public synchronized void consume()
{
while (pizzaNum <= 0)
{
try
{
wait();
}
catch (Exception e) {}
}
pizzaNum--;
notifyAll();
System.out.println("Consume a pizza, current pizza num: "+pizzaNum);
try
{
Thread.sleep(1000);
}
catch(Exception e){}
}
};

class Cooker extends Thread
{
Pizza p;
public Cooker(Pizza p)
{
this.p = p;
this.setPriority(10);
this.start();
}
public void run()
{
while (true)
{
p.produce();
}
}
};
class Consumer extends Thread
{
Pizza p;
public Consumer(Pizza p)
{
this.p = p;
this.start();
}
public void run()
{
while (true)
{
p.consume();
}
}
};

class DemoPizzaStore
{
public static void main(String[] args)
{
Pizza p = new Pizza(0);
Cooker p1 = new Cooker(p);
Cooker p2 = new Cooker(p);
Consumer c1 = new Consumer(p);
Consumer c2 = new Consumer(p);
Consumer c3 = new Consumer(p);
}
}
mx1029 2003-10-30
  • 打赏
  • 举报
回复
1天没有来帖子就沉底了。。。我继续关注。
mx1029 2003-10-28
  • 打赏
  • 举报
回复
望大师指点~~~~说具体点。。。
superszhu 2003-10-27
  • 打赏
  • 举报
回复
vetor是个容器,能把不同的对象放在里面,可象数组一样操作。


synchronized 关键字锁定对象。对象是在 synchronized 代码内部被锁定的,要调用里面的对象,就必须一个一个排着队进行。
mx1029 2003-10-27
  • 打赏
  • 举报
回复
请大家教教我。谢谢了。
mx1029 2003-10-27
  • 打赏
  • 举报
回复
写错了,是vector.
qijiahao 2003-10-27
  • 打赏
  • 举报
回复
现在的java书泛滥其实好的没有。全是天下文章一大抄。呵呵
vector是一个可变长的数组。synchronized是一个同步机制。
mx1029 2003-10-27
  • 打赏
  • 举报
回复
有这方面的电子资料么?我买的书里用到了,可是对它们的用法却没有提。。。都是些什么破书啊。。。。
世界顶级程序设计高手的经验总结 【ACM-ICPC全球总冠军】巫泽俊主译 日本ACM-ICPC参赛者人手一册 本书对程序设计竞赛中的基础算法和经典问题进行了汇总,分为准备篇、初级篇、中级篇与高级篇4章。作者结合自己丰富的参赛经验,对严格筛选的110 多道各类试题进行了由浅入深、由易及难的细致讲解,并介绍了许多实用技巧。每章后附有习题,供读者练习,巩固所学。 本书适合程序设计人员、程序设计竞赛爱好者以及高校计算机专业师生阅读。 目录 · · · · · · 译者序 前言 第1章 蓄势待发——准备篇 1.1  何谓程序设计竞赛 1.2  最负盛名的程序设计竞赛 1.2.1  世界规模的大赛——Google Code Jam(GCJ) 1.2.2  向高排名看齐!——TopCoder 1.2.3  历史最悠久的竞赛—— ACM-ICPC 1.2.4  面向中学生的信息学奥林匹克竞赛——JOI-IOI 1.2.5  通过网络自动评测——Online Judge(OJ) 1.3  本书的使用方法 1.3.1  本书所涉及的内容 1.3.2  所用的编程语言 1.3.3  题目描述的处理 1.3.4  程序结构 1.3.5  练习题 1.3.6  读透本书后更上一层楼的练习方法 1.4  如何提交解答 1.4.1  POJ的提交方法 1.4.2  GCJ的提交方法 1.5  以高效的算法为目标 1.5.1  什么是复杂度 1.5.2  关于运行时间 1.6  轻松热身 1.6.1  先从简单题开始 1.6.2  POJ的题目Ants 1.6.3  难度增加的抽签问题 阅读 第2章 初出茅庐——初级篇 2.1  最基础的“穷竭搜索” 2.1.1  递归函数 2.1.2  栈 2.1.3  队列 2.1.4  深度优先搜索 2.1.5  宽度优先搜索 2.1.6  特殊状态的枚举 2.1.7  剪枝 2.2  一往直前!贪心法 2.2.1  硬币问题 2.2.2  区间问题 2.2.3  字典序最小问题 2.2.4  其他例题 2.3  记录结果再利用的“动态规划” 2.3.1  记忆化搜索与动态规划 2.3.2  进一步探讨递推关系 2.3.3  有关计数问题的DP 2.4  加工并存储数据的数据结构 2.4.1  树和二叉树 2.4.2  优先队列和堆 2.4.3  二叉搜索树 2.4.4  并查集 2.5  它们其实都是“图” 2.5.1  图是什么 2.5.2  图的表示 2.5.3  图的搜索 2.5.4  最短路问题 2.5.5  最小生成树 2.5.6  应用问题 2.6  数学问题的解题窍门 2.6.1  辗转相除法 2.6.2  有关素数的基础算法 2.6.3  模运算 2.6.4  快速幂运算 2.7  一起来挑战GCJ的题目(1) 2.7.1  Minimum Scalar Product 2.7.2  Crazy Rows 2.7.3  Bribe the Prisoners 2.7.4  Millionaire 阅读 第3章 出类拔萃——中级篇 3.1  不光是查找值!“二分搜索” 3.1.1  从有序数组中查找某个值 3.1.2  假定一个解并判断是否可行 3.1.3  最大化最小值 3.1.4  最大化平均值 3.2  常用技巧精选(一) 3.2.1  尺取法 3.2.2  反转(开关问题) 3.2.3  弹性碰撞 3.2.4  折半枚举(双向搜索) 3.2.5  坐标离散化 3.3  活用各种数据结构 3.3.1  线段树 3.3.2  Binary Indexed Tree 3.3.3  分桶法和平方分割 3.4  熟练掌握动态规划 3.4.1  状态压缩DP 3.4.2  矩阵的幂 3.4.3  利用数据结构高效求解 3.5  借助水流解决问题的网络流 3.5.1  最大流 3.5.2  最小割 3.5.3  二分图匹配 3.5.4  一般图匹配 3.5.5  匹配、边覆盖、独立集和顶点覆盖 3.5.6  最小费用流 3.5.7  应用问题 3.6  与平面和空间打交道的计算几何 3.6.1  计算几何基础 3.6.2  极限情况 3.6.3  平面扫描 3.6.4  凸包 3.6.5  数值积分 3.7  一起来挑战GCJ的题目(2) 3.7.1  Numbers 3.7.2  No Cheating 3.7.3  Stock Charts 3.7.4  Watering Plants 3.7.5  Number Sets 3.7.6  Wi-fi Towers 第4章 登峰造极——高级篇 4.1  更加复杂的数学问题 4.1.1  矩阵 4.1.2  模运算的世界 4.1.3  计数 4.1.4  具有对称性的计数 4.2  找出游戏的必胜策略 4.2.1  游戏与必胜策略 4.2.2  Nim 4.2.3  Grundy数 4.3  成为图论大师之路 4.3.1  强连通分量分解 4.3.2  2-SAT 4.3.3  LCA 4.4  常用技巧精选(二) 4.4.1  栈的运用 4.4.2  双端队列的运用 4.4.3  倍增法 4.5  开动脑筋智慧搜索 4.5.1  剪枝 4.5.2  A*与IDA* 4.6  划分、解决、合并:分治法 4.6.1  数列上的分治法 4.6.2  树上的分治法 4.6.3  平面上的分治法 4.7  华丽地处理字符串 4.7.1  字符串上的动态规划算法 4.7.2  字符串匹配 4.7.3  后缀数组 4.8  一起来挑战GCJ的题目(3) 4.8.1  Mine Layer 4.8.2  Year of More Code Jam 4.8.3  Football Team 4.8.4  Endless Knight 4.8.5  The Year of Code Jam 阅读 本书中未涉及的拓展主题 书中例题列表 参考文献
实用的电子书 作为一个长篇的C++入门教程,无论如何也应该有这么个引言,可是文笔并不好的我,想了很久也不知道该如何写。。。。。。   仔细想想,与其把这篇短文当作教程的引言,其实它更应该是一篇引导初学者步入C++殿堂的策论。   几年并不算很长的编程经验,使我感触颇深,痛苦迷茫,以及成功后的喜悦一直交替着伴随我,爱好编程的我,在学习期间也被很多很多学习的困难疑惑所阻挡,甚至不只一次的想放弃。   让我初次领略到作为一个程序员应该有快乐与喜悦的是VISUAL BASIC语言,这些年为了工作,也学习过很多其它的语言,包括时下正在流行的JAVA与C#等等,在这里不得不说的是,作为一个程序员,一个能够适应当前中国工作环境的程序员,你要学的还远不止这些,包括数据系统,等等,等等。   很早就听人说过,如果你是一个程序员,如果你没有学过C语言,那么就不能算做是一个真正的程序员,这句话也许有点夸张,不过当你学习过它以后就不得不承认这句话真的有那么几分道 理,C++语言是由C语言发展而来的一种新的支持面向对象的语言,从一开始接触它,它的魅力就深深的吸引着我,起初我和很多想要学习它的人一样,觉得它很难懂,当时为了看懂,想明白一些现在看来真的很容易的例子时,真的有点让我抓狂。   作为一种灵活性高,体系庞大,支持面向对象思想的高级语言,C++的确比其它语言更难学习,很多正在学习它的在校大学生,以及很多正在从事编程工作想自学它的程序员,对于它的入门及各必要知识点掌握苦恼不已。   其实学习C++和学习其它知识一样,并没有很多特别的要求,需要的只是那么一点点耐心,那么一点点忍耐力,以及遇到困难挫折不轻易屈服的精神,更重要的一点是你必须有一本好的,适合你的入门书籍指引你逐渐进步,面对书店里种类繁多,出名的不出名的C++教材,不光是初学者就连我也同样觉得眼花缭乱无从选择,很多优秀的国外C++教材有着过于系统的知识面以及跳跃式阅读的方法, 这对初学者,尤其是从小就习惯从头到结尾阅读书籍的中国人来说是不合适的,国内的教材多以大学教材为主,这些书中的例子多以大学数学,或者工程数学举例,这样一来就把很多数学并不很好的读者拒之门外了。   在行内,很多人是不愿意和你分享学习经验的,一来工作任务繁重,再着很多人觉得这样会给自己带来更多的竞争对手。这些我都亲身经历过,正是因为此类的种种感受,于是我由内心而发,真心实意的愿意帮助那些正在学习C++语言想入门的朋友们。   从一开始学习计算机语言,几乎所有的人都会问到,我该如何入门,入门后又该如何继续持久的进步下去呢?首先我要说的是,计算机语言的入门,无论是C/C++还是JAVA、 C#,他们都和高等数学没有太多联系,计算机语言是一种逻辑的文字描述,体现逻辑的是思想,当你通过理解一些计算机语言所描述的,并不算难的逻辑问题后,你就已经掌握了语言本身,并且真正入门了。   当然,计算机语言毕竟是和数学有密切联系的产物,在计算机世界里他们彼此依赖谁也离不开谁,当你正确理解编程思想,掌握必要知识点,入门之后,如果想做一个优秀的程序员而不是单单做一个程序的"拼装工",你就不得不对数学知识进行进一步的系统学习。 此长篇C++入门教程正是指引读者迈入C++殿堂的初级读本,目的只是帮助读者快速入门,掌握必要的知识点,为了让教程通俗易懂,容易理解,适合自学,笔者为此下了不少工夫,同时也和我的一些朋友讨论过,意见中值得注意的是, 一个作者如果没有教学,就只知道摸索一种适合自己的学习方法,对于语言学习的难点重点,关键是如何将复杂的问题用朴素的"俗"文化来写,针对这些问题笔者笔者是认真反思过的,所以全书完全站在初学读者的思考的角度来写,教程中完全不包括任何难以理解的高等数学、工程数学问题,及C++标准库知识,着重对各入门的难点重点详细讲解分析,相信认真学习并读过它的人绝对不会觉得是浪费时间。   对于C++学习,创建一条由入门到深入最后到精通的可持续学习并不段发展的道路概括起来可以是以下顺序。   1.学习一些基本的C语言知识,例如:什么是变量,什么是函数   2.C++语言入门,基本知识点的掌握。   3.高等数学及工程数学的系统学习,结合实际了解并使用C++的各类常用的标准库。此外平时可以找一些广受好评的具备一定深度的C++教材看一下,进一步理解C++的高级编程精髓,以及看一些计算机原理和数据结构方面的书籍。   4.学习包括在各类操作系统下编程的必要知识,以Windows操作系统为例,需要学习掌握WIN API,以及高效开发的MFC,VCL等在内的其它知识。   千里之行始于足下,路虽然很长,困难也会很多,不过你一旦入门,一定会觉得面前豁然开朗,会不段的激励着你学习下去的。读者们如果在学习过程中有不懂的问题可以来我的站点提问,我会尽力解答的。站点地址:http://www.cndev-lab.com   写到这里笔者也呼吁更多的程序高手们,敲起你的键盘,把你的优秀的经验和思想奉献出来,帮助更多需要的人,毕竟思想是需要的是沟通的,知识是需要的是共享,快乐需要的是传递的。   最后在这里要感谢的是我的家人,我的父亲:管苗青、母亲:汪秋霞。多年来父亲母亲给我的帮助很大,一直耐心鼓励着我学习,母亲对我学习上的帮助已及她优秀的自学经验思想是我一生中最重要的财富。 作者:管宁 二零零五年三月十七日凌晨三点半

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧