thmeticExceptione)
{
System.out....
e.printStackTrace();
}
catch(DEvideByMinusExceptione)
{
System.out....
e.printStackTrace();
}
catch(Exceptionex)
{
System.out...
ex.printStackTrace();
}
finally
{
//无论如何都会执行的代码
System.out.println("finally");
}
System.out.println("end");
}
}
父类中没有throw异常,那么子类中就无法接收到错误信息
如上Test父类throw自定义异常
包:
区分类
必须在文件夹下建立包目录
编译器默认会在目录下查找包名目录然后执行java.exe
多个文件:跨文件被访问的类必须是public的
需要调用的类名也要写上完整的包名
解决上述繁琐的步骤,需要import关键字
默认importjava.lang.*;
java中的访问控制:
jar功能
java>jar-cf创建文件名lesson.jarorg
压缩org文件目录
java>jar-cvflesson.jarorg列出清单
java>jar-t
java>jar-xflesson.jar解压
创建多线程:
方法1:
newThread();新建一个thread并启动.start();
前台进程,后台进程
Threadtt=newTestThread();
tt=setDaemon(true);将之变为后台进程
tt.join();合并到主线程中--》单线程
join需要配合trycatch使用
方法2
有参数的多线程构造函数:Thread(Runnabletarget);
Threadtt=newThread(newTestThread());
//此时不再调用TestThread中的run方法,改为调用Runnale中的run方法
classTestThreadimplementsRunnable
{
}
案例:卖票(前两个就是异步)
1:无法完成正常售票!!新建4个线程,大家都在各自出售
newTestThread().start();
newTestThread().start();
newTestThread().start();
newTestThread().start();
2:无法完成正常售票!!!这样的情况下只使用一个线程来卖票,只有一个职工在
工作 TestThreadtt=newTestThread();
tt.start();
tt.start();
tt.start();
tt.start();
3:解决
方案:~~good!
实现Runnale接口方式来解决
问题:
TestThreadtt=newTestThread();
newThread(tt).start();
newThread(tt).start();
newThead(tt).start();
实现了共同完成售票
a,使用Runnable把代码和数据有效分离
应用:
网络聊天程序
表记录的复制中途取消
服务器为每一个来访者都创建专线服务
Thread.sleep(毫米数);暂停时间
暂停则跳转到第二个线程,三个。。四个。。。
四个线程在暂停后都会去执行同一条语句于是-->得出意外的数值
解决方案1:
要是想避免让其他线程执行,让其等待第一线程执行后再执行,就好比独木桥,只能一个人在上面走
将需要“原子性”的代码段使用同步语句块来实现同步关键字:synchronized
Stringstr=newString("");
synchronized(str)
{
//todo-yourcode
}
就是一个阻塞的关系!
同步是以牺牲
系统资源为代价的
解决方案2:使用同步函数还是在函数头上加上一个synchronized