java基础———第十一天
来源:互联网 发布:三线表格及数据分析 编辑:程序博客网 时间:2024/05/17 09:27
包
关键字:package(包)关键字:import(导入)
包名命名规范:所有字母小写。
如何创建:编译时在命令行: javac -d . 文件名.java("."表示当前路径,也可自定义文件路径)
包&包之间相互访问的常见错误
1.当包中的类访问到另一个包中的类的时候要用全名称:包名.类名2.当一个包中的类访问到另一个包中的类的时候要指定classpath。
3.当一个包中的类访问到另一个包中的类的时候,类名要用public修饰,要使用的方法也需要用public修饰。
权限修饰符:protected(保护权限)是为其他包中的子类提供的一种权限。
jar包
作用:将class文件进行打包陈jar.exe文件。
创建:进入class文件加下,命令行操作:jar -vcf 文件名.jar 包名
多线程
进程:当前正在执行的程序,代表一个应用程序在内存中的执行区域。线程:是进程中的一个执行控制单元,执行路径。
单线程:一个进程中只有一个执行路径。
多线程:一个进程中有多个执行路径。
好处:让多部分代码同时执行,提高了效率。
创建方式一:继承Thread类
步骤:
1.子类覆盖父类中的run方法,将线程运行代码存放在run中。
2.建立子类对象的同时被创建。
3.通过调研start方法开启线程。
例:
class ThreadDemo {public static void main(String[] args) {Demo d = new Demo();//开启线程d.start();} }//通过继承Therad 创建。class Demo extends Thread {public void run() {System.out.println("覆盖Thread中的}}特点:
1.用该方法创建的线程对象会导致每一个对象中都存储一份属性数据,无法共享,虽可以加载静态解决,但生命周期过长。
2.如果一个类明确了自己的父类,那么它就不可以在继承Thread。
创建方式二:实现Runnable接口
步骤:
1.子类覆盖接口中的run方法。
2.创建子类对象。
3.通过Thread类创建线程,并实现了以Runnable接口的子类对象作为参数类型传递给Thread类的构造函数。
4.Thread类对象调用start方法,开启线程。
例:
class ThreadDemo {public static void main(String[] args) {Threa t = new Threa();Thread d0 = new Thread(t);Thread d1 = new Thread(t);Thread d2 = new Thread(t);d0.start();d1.start();d2.start();}}//通过实现Runnableclass Threa implements Runnable {public void run() {System.out.println("覆盖Runnable中的run方法")}}特点:
1.之所以要将Runable接口的子类对象传递给Thread类的构造函数,是因为线程对象在创建时,必须明确要运行的run方法
而这个run方法定义在了Runnable接口的子类中,所以要将该run方法所属的对象传递给Thread类的构造函数。让线程对象
一建立,就知道运行哪个run方法。
2.因为该方式是定义一个Runnable接口的子类对象,可以被多个线程所操作实现了数据的共享。
3.避免了单继承的局限性。
线程的五种状态
注:临时阻塞时具备了执行资格,但没有获取资源的特殊状态。
多线程的安全问题
概况:当线程中多条代码在同时操作共享数据。
解决方式:同步机制
原理:当一条线程在操作数据时,禁止其它线程对其的操作。
同步代码块
格式:
synchronized(对象){
需要同步的代码;
}
注:该对象可以是任意对象,但不能传入匿名对象。
前提:
1.同步需要两个或者两个以上的的线程。
2.多线程使用的是同一个锁(对象)。
利:解决了多线程的安全问题。
弊:耗费资源,降低了程序运行效率。
同步函数
格式:在函数上加上synchronized修饰符即可。
注:
同步函数的锁是:this。
静态同步函数的锁是:类名.class。
单例设计模式:懒汉式(解决多线程下的安全隐患)
class Single {private static Single s = null;private Single() {}public static Single getIntance() {if (s == null){synchronized (Single.class){if (s == null){s = new Single();}}}return s; }}
- java基础———第十一天
- java基础第十一天——多线程
- Java基础学习第十一天——Object类
- java学习总结——第十一天
- 黑马程序员——java基础学习笔记——第十一天
- Java基础---第十一天 多线程
- java基础第十一天 异常
- 黑马程序员 —— Java多线程1 (第十一天)
- Java进阶学习第十一天——cookie&session入门
- 传智博客JAVA基础第十一天
- Day11第十一天java基础---------线程
- Java基础第十一天--Collection集合
- java基础———第十天
- java基础第一天——入门
- 第十一天——愤怒与无奈
- 东软睿道实训日记——第十一天
- C#基础第十一天
- 梦入IBM之java基础第十一天
- AsyncQueryHandler 分析 缺陷
- poj3216 Repairing Company 二分图匹配、最小路径覆盖
- 通过show status 来优化MySQL数据库
- BaseServlet扩展了的HttpServlet,来实现减少Servlet数量
- 天猫新旺铺模板制作规范说明
- java基础———第十一天
- 游戏成为游戏的原因 分享
- 模版函数指针,C++委托的实现-原创
- 计算机编程:成功的十项必备技能
- 中国游戏发展史
- 缺陷与出路——一个游戏开发者的反思(转自《大众软件》)
- 游戏编程入门手册
- 浅淡副本战斗模式
- 一种简单有效的3D模型的动画多线程方案