Java学习总结.doc_第1页
Java学习总结.doc_第2页
Java学习总结.doc_第3页
Java学习总结.doc_第4页
Java学习总结.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java多线程学习总结2009-11-25 作者: 编辑:闫蕊 点击进入论坛关键词:Java多线程一、线程的基本概念简单的说:线程就是一个程序里不同的执行路径,在同一个时间点上cpu只会有一个线程在执行,Java里的多线程是通过java.lang.Thread类来实现的,每个线程都拥有自己独立的方法栈空间。二、java线程的创建和启动第一种定义线程类实现Runnable接口:Thread myThread = new Thread(target) /target为Runnable接口类型Runnable中只有一个方法:public void run();用以定义线程运行体第二种可以定义一个Thread的子类并重写其run方法:clas MyThread extends Threadpublic void run()线程类必须通过执行Thread的start()方法启动一个新的线程,如果调用run()方法是属于方法的调用,不会启动一个新的线程,推荐使用第一种方式创建线程,使用接口较为灵活。三、线程状态装换调用线程start()方法时,线程进入就绪状态,Cpu分配时间片,线程进入运行状态,时间片结束,run()方法未执行完,线程进入阻塞状态。四、线程控制基本方法isAlive() /判断线程是否还“活着”,即线程是否还未终止getPriority() /获得线程的优先级数值setPriority() /设置线程的优先级指数Thread.sleep() /静态方法,将当前线程睡眠指定毫秒数join() /调用某线程的该方法,将当前线程与该线程合并,/即等待该线程结束,再回复当前线程的运行。yield() /让出CPU,当前线程进入就绪状态等待调度interrupt() /中断线程wait() /当前线程进入对象的wait poolnotify()/all /唤醒对象的wait pool中的一个/所有等待线程五、sleep方法Thread的静态方法public static void sleep(long millis)throws InterruptedException必须对异常进行捕捉Thread.currentThread(); /拿到当前线程AWT组件库(达内学习日记之二十三)2004-8-30 星期一 晴1. 组件公有方法答:1) setForeground(): 设置前景颜色; setBackground(): 设置背景颜色; 2) getForeground(): 取得前景颜色; setBackground(): 取得背景颜色; 3) setEnabled(): 使组件有效; getEnabled(): 取得组件有效的状态; 4) setVisible(): 使组件可视; getVisible(): 取得组件可视状态; 5) setFont(): 设置组件字体; getFont(): 取得组件字体; 6) setSize(): 设置组件大小; getSize(): 取得组件大小; 7) getPreferredSize(): 取得默认的尺寸; 8) setLocation(): 设置组件位置; getLocation():获得组件位置; 9) setBounds(): 移动并且重新调整尺寸;getBounds(): 返回这个组件的范围(位置和尺寸); 10)paint(): 绘制组件; repain():重绘; update():更新;2. 按钮(Button)答:1) 当单击时产生一个动作action; 2) 构造函数: Button() Button(String label) 3) 方法: setActionCommand(): 设置这个按钮触发的动作事件的命令名称; getActionCommand(): 返回这个按钮触发的动作事件的命令名称; setLabel(): 设定这个按钮的标签; getLabel(): 得到这个按钮的标签; addActionListener(): 加入指定的动作侦听器去接按钮动作事件; removeActionListener(): 移除指定的动作侦听器,使按钮不再接收动作事件; getActionListeners(): 返回所有登记的动作侦听器的数组;3. 画布(Canvas)答:1) 用来显示图形; 2) 绘制外形、像素以及带有许多颜色的文本 3) 构造方法: Canvase() Canvas(GraphicsConfiguration conf) 4) 方法: paint() update()4. 复选框(Checkbox)答:1) 单独使用,显示一选中或不选中的复选框; 2) 作为复选框组的成员,它的表现和单选按钮同; 3) 构造函数: checkbox() checkbox(String label) checkbox(String label, boolean state) checkbox(String label, boolea state, CheckboxGroup group) checkbox(String label, CheckboxGroup, boolean state) 4) 关于checkbox的方法: addItemListener(): 加入指定项目监听器接收复选框项目事件; removeItemListener(): 移除指定的项目监听器,使复选框不再接收复选框事件; setState(): 将复选框设定为指定状态; getState(): 判断复选处于“开”或“关”状态; setLabel(): 设置复选框标签; getLabel(): 得到复选框标签。 5) 关于CheckboxGroup的方法 getSelectedCheckbox(): 从复选框组中得到当前选择; setSelectedCheckbox(): 设置复选框组中指定复选框为选中。5. 下拉列表(Choice)答: 1) 一种下拉菜单形式的单选项; 2) 当前选中的项目显示在屏幕上; 3) 构造函数: Choice() 4) 方法: add(): 为下拉列表加入选项元素; insert: 在指定位置插入选项元素; getSelectedItem(): 以字符串形式返回当前选项; getSelectedIndex(): 返回当前选项的索引; getItem(): 返回下拉列表中指定索引位置元素的字符串格式; addItemListener(): 加入指定项目监听器,接收来自下拉列表的项目事件; removeItemListener(): 移除指定项目监听器,使它不再接收来自下拉列表的项目事件;6. 标签(Label)答:1) 用以在屏幕上显示文本; 2) 没有直接的交互动作; 3) 构造方法: Label() Label(String text) Label(String text, int alignment) 4) 方法 setText(): 设置标签的文本为指定内容; getText(): 得到标签的文本内容;7. 列表(List)答:1) 在屏幕上显示一组文本选项; 2) 允许用户单选或多选; 3) 构造方法 List() List(int rows) List(int rows, boolean multipleModel)8. 文本域(Textfield)答:1) 提供一单行可供编辑的文本 2) 构造方法 Textfield() Textfield(int columns) Textfield(String text, int columns)9. 文本区(TextArea)答:1) 提供多行多列的可编辑文本区; 2) 文本区将显示水平和垂直的滚动条; 3) 构造方法 TextArea() TextArea(int rows, int cols) TextArea(String text) TextArea(String text, int rows, int cols) TextArea(String text, int rows, int cols, int scrollbars)10. 对话框(Dialog)答:1) 一个带有标题和边界的自由窗口; 2) 黙认的布局管理器是BorderLayout; 3) 必须拥有一个调用者; 4) 可以是模式和非模式的。11. 文件对话框(File Dialog)答:1) 模式对话框; 2) 用以选择文件;12. 滚动面板(Scroll Pane)答:1) 一个容器类; 2) 能为单个组件自动水平或垂直滚动;13. 菜单条(MenuBar)答:1) 一个菜单条组件是一个水平菜单,它只能加入到一个框架中,并成为所有菜单树的根。 2) 使用框架的setMenuBar()方法设置菜单条;14. 菜单(Menu)答:1) 主要功能是装载菜单项; 2) 继承自MenuItem类,因此它能装载其它菜单;15. 菜单项(MenuItem)答:1) 菜单项组件是菜单树的文本“叶”结点,它们通常被加入到菜单中,以构成一个完整的菜单; 2) 通常将一个ActionListener加入到一个菜单项对象中,以提供菜单的行为。16. 弹出式菜单(PopupMenu)答:1) 提供了一种独立的菜单,可以在任何组件上显示; 2) 可以将菜单条目和菜单加入到弹出式菜单中去。AWT事件模型1. 什么是事件?答:1) 事件源-事件的产生器; 2) 事件-描述发生了什么的对象; 3) 事件处理器-接收事件、解释事件并处理用户交互的方法;2. 事件源答:1) 事件源是一个事件的产生者; 2) 提供方法允许其它方法增加或移除事件处理器; 例:在Button组件上点击鼠标会产生以这个Button为源的一个ActionEvent, 这个ActionEvent实例是一个对象,它包含关于刚才发生的那个事件的信息的对象。3. 事件处理器答:1) 事件处理器就是一个接收事件、解释事件并处理用户交互的方法。4. 事件类型答:1) 对于每类事件,都有一个接口,这个接口必须由想接收这个事件的类的对象实现。这个接口还要求定义一个或多个方法。当发生特定的事件时,就会调用这些方法。5. ActionEvent答:1) 双击列表项; 2) 按钮被选中; 3) 菜单项被选中; 4) 文本域回车。6. TextEvent答:适用二行文本域同步情况7. ItemEvent答:1) 多选框选中或取消; 2) 可选菜单选中或取消; 3) 下拉列表项选中; 4) 列表项选中。8. 事件适配器答:1) 事件适配器空实现了一个事件处理器的所有方法; 2) 你只需继承并重写你感兴趣的方法即可 比较AWT和Swing 1.AWT和Swing组件体系 a)Swing:通过在父组件上动态调用add()和remove()方法,来对组件树进行动态维护,因此,可以存在没有父组件的子组件。 b)SWT:通过在构造函数的参数中,指定父组件,因此,不可能存在没有父组件的子组件。 2.AWT和Swing组件绘制 a)Swing:通过调用组件的paint()方法来进行组件的绘制,组件进一步对他的子组件调用paint(),从而完成整棵组件树的绘制。通过子类化,重写paint()方法,可以完全定制一个组件的绘制。 b)SWT:SWT组件只是本地平台上实际组件的一个代理,实际组件采用win32编程方式进行绘制,绘制的过程不在JVM中完成。因此,子类化也不能对绘制进行完全定制。当SWT组件进行绘制时,他在完成了本地的绘制以后,会返回JVM,然后对所有已注册的PaintListener发出通知,因此,通过注册PaintListener可以对组件绘制进行一定程度上的修改。 3.AWT和Swing事件模型 a)Swing中的事件会跟据当前的焦点进行发送。父组件不能对事件进行过滤。Swing中的事件监听器都是有类型的,因此每个组件所能支持的事件类型是通过方法名来限定的。不能扩展。 b)SWT中的事件也是根据当前的焦点进行发送。父组件不能对事件进行过滤。SWT中支持有类型的监听器,也支持无类型的监听器,通过addListener(type,listener),我们可以为组件添加任何类型的监听器。 4.AWT和Swing包设计 a)Swing是一个纯粹的组件库,他没有图形的操作,他的绘制最终转发给Java 2D来完成。 b)SWT包含了组件库和图形库,他的结构与AWT比较接近。 5. 其它 AWT和SWT实现原理不同:AWT控件相当于是一笔一画绣出来的,参加 java.awt.Component.paint(Graphics g),性能差;而SWT调用了操作系统后台原生库,org.eclipse.swt.widgets.Control类型中就没有类似的paint方法了,但是有一个接口org.eclipse.swt.graphics.Drawable.实现原理的不同带来了性能和用户视觉的差异。 SWING 是基于AWT提供的MVC不完全实现,JFACE是基于SWT提供的MVC不完全实现。两者的核心作用都是提供了viewer和模型封装的概念,从设计实现层面看,SWING更加唯美一些,JFACE则更加侧重于实用。SWING和 JFACE两者都偏重于行为控制上下文,而对UI数据(例

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论