二月的第三周已经过去,这一周过的非常之快,而且感觉自己的编程水平也逐渐提高,学到了很多很有用的东西。下面就来总结回顾下这一周学习的内容。
- 多线程Thread
- 多线程的概念和如何创建多线程
- 继承Thread类。
- 实现Runnable接口,但是创建线程必须借助Thread类,将Runnable类型对象作为参数传递到Thread的构造方法中。
- 线程中的几个常用的方法
- currentThread();sleep();getName();setName();setDeamon();setPriority();getPriority();
- 线程的安全问题
- 多个线程同时执行的时候,会造成数据紊乱,解决这个问题可以给对象或方法加锁synchronized;
- *对象拥有钥匙,当一个线程获得该对象的钥匙后,对象的钥匙被拿走了,其他线程从对象这里拿不到钥匙,只能等待拿到了钥匙的线程执行同步方法或同步代码块释放了钥匙给对象后才能执行。
- 死锁
- 在加锁的时候,会出现多个线程之间相互等待,造成死锁。
- 线程之间的通信
- jion();暂停当前线程,直到调用jion();方法的线程执行完毕为止,
- wait();暂停当前线程,直到另一个线程调用notify();或notifyAll();为止。
- 多线程的概念和如何创建多线程
- Swing
- 在Swing之前,JAVA有AWT,但是它严重依赖于本地系统,可移植性差,所以被抛弃,基于AWT开发了Swing
- Applet,Java编写的小应用程序,嵌入在网页中执行,提高页面的动态交互效果。
- 需要重写4个方法,init->start->stop->destory
- SWING的层次关系
- 顶层容器,JFrame
- JPanel,中间级容器,可以将小型的轻量级的组件放置在其中。
- JLabel,标签,既可以显示文本,也可以显示图片。
- JButton,按钮。
- JTextFile,文本框。
- JTextArea,文本域。
- JCheckBox,复选框。
- JRadioButton,单选框,需要将其放置逻辑分组中,ButtonGroup。
- JComboBox,下拉列表框。
- JMenuBar,菜单栏,菜单栏可以放置菜单JMenu。
- JTable,设置表格。
- JOptionPane,对话框。
- JFileChooser,文件选择框,可以弹出保存或打开文件选择框。
- 顶层容器,JFrame
- 布局及事件
- 容器、组件、布局管理器、观感四者之间的关系。
- 组件是可以显示、与用户交互的对象。
- 容器是特殊的组件,可以容纳其他组件或容器。
- 布局管理器是专门用来管理组件在容器中位置的工具。
- 流式、边界、网格、卡片、箱子、网格包布局。
- 事件,监听键盘,鼠标等动作发生时,程序应当做出的反应。
- 监听器,一个监听器可以被多个组件注册,一个组件也可以注册多个监听器。
- 事件源、事件、事件处理器。
- 实现监听器接口的类来进行对事件的监听和处理,这种就叫委托事件模型。
- 如果监听处理器的功能比较简单,可以用匿名内部类来实现接口从而实现对事件的监听。
- 容器、组件、布局管理器、观感四者之间的关系。
- 网络编程
- UDP协议,不可靠的,无需建立连接。开销小,效率高。
- DatagramSocket建立端口,DatagramPacket数据报包(发送的信息需要转成字节数组,然后封装成数据报包传输),
- send();receive();方法。
- TCP协议,面向连接,可靠的传输数据。消耗资源大,需要通过三次握手才能建立连接
- localhost本地主机,127.0.0.1本地回环地址
- Socket建立客户端口,ServerSocket创建tcp服务器服务,通过IO流来传输数据。
- accept();方法。
- 因为需要同时进行接收和发送,所以多线程在网络编程中尤为重要!
- UDP协议,不可靠的,无需建立连接。开销小,效率高。