java学习整理20170731

22.Java Applet多媒体开发
a)java程序分为引用程序和小应用程序,小应用程序通常通过浏览器执行,浏览器下载小应用程序并在本地执行
b)Applet的实现主要依靠java.applet包中的Applet类,它必须嵌入在HTML页面中,同时可以与Web页面进行交互
c)含有Applet的HTML必须由<applet></applet>标签,浏览器遇到该标签时便会下载小程序代码到本地执行
d)HTML关于Applet的信息包括:字节码文件名.class文件;字节码文件地址;网页上显示小程序的方式
e)控制Applet运行状态的四个方法
init():Applet运行前的初始化,通常在改方法中完成参数传递和添加用户界面的操作
start():init后自动调用,可以多次执行
stop():用户离开Applet时执行
destroy():浏览器关闭时,系统执行destroy方法
23.Java异常处理
a)体现了Java语言的健壮性,提前处理程序有可能出现的异常情况
b)异常类:Java.lang.Throwable时所有异常类的父类;Error与Exception前者定义不希望被捕获的异常,后者是程序能够捕获的异常
c)try...catch...finally:try块用于检查可能会出现异常的代码段,catch块处理该异常,finally中是绝对会执行的代码,不管程序是否发生异常
d)多异常捕获try...catch(Exception1),catch(Exception2)...
e)抛出异常Throws:遇到异常,对它不进行处理,而是把异常交给父类;
声明异常:return-type methodName(parameters) throws Exception{}谁调用这个方法,这个异常就由谁处理
f)throw直接抛出异常给上一级调用者,抛出的异常可以是异常引用,也可以是异常对象,一般是在方法内部抛出
throw 异常对象;
g)自定义异常:需要继承致Throwable类或者他的子类Exception类
h)异常处理三种方式:try...catch捕获并处理异常;在方法声明处用throws向上抛出;catch捕获后使用throw重新抛出
24.I/O与文件处理
I/O:数据流的输入输出方式
Java字节流:以字节为单位读写数据
InputStream/OutoutStream:输入输出的父类
FileInputStream/FileOutoutStream:继承和重写InputStream/OutoutStream类
FileInputStream:FileInputStream(String FilePath)/FileInputStream(File FileObject)
FileOutputStream:FileOutputStream(String FilePath)/FileOutputStream(File FileObject)/FileOutputStream(String FilePath,Boolean append)
DataInputStream/DataOutputStream:允许通过数据流读写Java语言的基本数据类型(八大基本数据类型)
DataInputStream(Object o)/DataOutputStream(Object o)
BufferedInputStream/BufferedOutputStream:数据以块的形式进入缓冲区,提高文件流的效率
BufferedInputStream(Object o)/BufferdeOutputStream(Object o)
Java字符流:对应字符的输入输出
FileReader:读字符文件类
FileReader(String FilePath)/FileReader(File FileObject)/fr.read(c)从文件流fr读字符到数组c里
FileWriter:写字符文件类
FileWriter(String FilePath)/FileWriter(File FileObject)/FileWriter(String FilePath,Boolean append)
BufferedReader/BufferedWriter:提升I/O字符流的效率
BufferedReader(Object FileObject)/BufferedWriter(Object FileObject)
InputStreamReader/OutputStreamWriter:将相应的字节流转换成字符流
InputStreamReader(InputStream in):使用当前平台默认编码规范转换;InputStreamReader(InputStream in,String CharSetName):使用指定编码规范转换;
OutputStreamReader(OutputStream Out):使用当前平台默认编码规范转换;OutputStreamReader(OutputStream Out,String CharSetName):使用指定编码规范转换;
文件类File:FIle(String FilePath)/File(String FilePath,String FileName)/File(File FileObject,String FileName)
25.多线程:并发性,效率高
a)进程:系统上运行的程序;线程:每个进程至少包含一个线程,线程是一组指令的集合,程序的特殊段
b)多线程优势:效率;耗时任务放到后台;IO时空利用
c)主线程
主线程在程序运行时立刻执行,自动创建;获取主线程:Thread t=Thread.currentThread()
d)实现Runnable接口创建线程
class MyThread implements Runnable{
public void run() {
//线程内容
}
}
public class Test{
public static void main(String[] args)throws Exception{
MyThread myThread=new MyThread();
Thread thread=new Thread(myThread);
thread.start();
//主程序(线程)内容
}
}
e)继承Thread类创建多线程
class MyThread extends Thread{
public void run() {
//线程内容
}
}
public class Test{
public static void main(String[] args)throws Exception{
MyThread myThread=new MyThread();
myThread.start();
//主程序(线程)内容
}
}
f)线程的生命周期:创建->启动->线程任务->线程退出
线程四状态:
创建:进入可执行状态
可执行:执行线程任务,完毕后进入消亡,执行过程中极有可能进入非可执行状态
非可执行:进入等待可执行状态队列中,此时其他线程正在执行任务
消亡:线程任务执行完成后进入消亡状态
g)线程调度:由JVM控制
线程优先级设定:Final void setPriority(int PriorityLevel);1=MIN_PRIORITY=<PriorityLevel<=MAX_PRIORITY=10
线程优先级获取:Final int getPriority()
h)jion()方法:调度方法;停止当前线程转而执行另一个进程,直到该进程执行完毕在执行当前进程
i)sleep(int mtime):方法让当前线程停止一段时间后在执行,当不会释放锁,时间以毫秒为单位
j)yield()方法:让有相同优先级的线程活得运行的机会;Thread.yield();
k)多线程的同步
多线程共享进程的内存,当他们要访问同一个数据时,我们需要控制一次只能一个线程访问该数据
实现同步synchronized(被锁的对象):可修饰类,方法,代码段,类似于原子操作或是事物一般,执行的时候必须一起执行完,当两个并发线程(thread1和thread2)访问同一个对象(syncThread)中的synchronized代码块时,
在同一时刻只能有一个线程得到执行,另一个线程受阻塞,必须等待当前线程执行完这个代码块以后才能执行该代码块。
l)死锁:相互等待
产生死锁的四个必要条件:
(1) 互斥条件:一个资源每次只能被一个进程使用。
(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
m)线程间的通信
Final void wait() throws InterruptedException:被调线程释放锁,进入等待状态直到其他线程调用notify()方法;可以添加时间参数
Final void notify():恢复任意以处于等待状态的线程,有JVM决定
Final void notifyAll():恢复所有等待状态中的线程
生产者/消费者模式:
synchronized(Object){//给Object加锁
while(true){
Object.notify();//唤另一个线程但是本线程还未释放Object锁,另一个线程开始等待本线程释放Object锁
while(!condition){
Object.wait();//本线程释放Object锁,进入等待状态,另一个线程获得Object锁开始运行
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值