---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------
1、包(package)
a、对类文件进行分类管理。
b、给类提供多层命名空间。
c、定义包应放在文件第一行。
定义包:使用关键字package。包名的所有字母小写。
如:package pack;
定义包名后,类名的全名前要加上包名。如:pack.java类名。
有了包后,范围变大,一个包中的类要被访问,必须要有足够大的权限,所以被访问的类要被public修饰。
此外,类公有后,被访问的成员也要公有才可以被访问。
总结:
包与包之间进行访问,被访问的包中的类以及类中的成员,需要public修饰。
不同包中的子类可以直接访问父类中被protected权限修饰的成员。
包与包之间可以使用的权限只有两种:public protected。
public protected default private
同一个类中 可以 可以 可以 可以
同一个包中 可以 可以 可以 不可以
不同包的子类 可以 可以 不可以 不可以
不同包中非子类类 可以 不可以
建议定义包名不要重复,可以使用url来完成定义,url是唯一的。
jar包:java的压缩包
2、多线程
进程:是一个正在执行中的程序。每一个进程执行都有一个执行的顺序,该顺序就是一个执行路径(或控制单元)。
线程:就是进程中的一个独立的控制单元。线程控制着进程的执行。
一个进程中至少有一个线程。
java VM 启动的时候会有一个进程java.exe。该进程中至少有一个线程负责java程序的执行。而且这个线程运行的代码存在于main方法中。该线程称之为主线程。
扩展:其实jvm启动的不止一个主线程,还有一个垃圾回收线程。
如何自定义一个线程呢?
通过查阅API文档,可知java已经提供了对线程这类事物的描述,就是thread类。
创建线程的第一种方法:继承thread类,复写run方法,调用线程的start方法(启动线程)。
为什么要覆盖run方法?
thread类用于描述线程。该类定义了一个功能,用于存储要运行的代码,该存储功能就是run方法。也就是说thread类中的run方法,是用于存储线程要运行的代码。
多线程的一个特性:随机性。谁抢到谁执行,执行时间由CPU决定。
线程都有自己的名称:Thread-编号。
static Thread currentThread():获取当前线程对象。
getName():获取线程名称。
设置线程名称:setName或构造函数。
创建线程的第二种方法:实现Runable接口。
步骤:
a、定义类实现Runnable接口。
b、覆盖Runnable中的run方法。(将线程要运行的代码存放在该run方法中。)
c、通过Thread类建立线程对象。
d、将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数。
e、调用Thread类的start方法开启线程。
两种方法的区别?
实现Runnable方式的好处:避免了单继承的局限性。在定义线程时,建议使用实现方式。
存放代码的位置不一样:
继承Thread方式:线程代码存放在Thread子类run方法中。
实现Runnable方式:线程代码存放在接口的子类的run方法。
多线程的运行会出现安全问题?
问题的原因是:当多条语句在操作同一个线程共享数据时,一个线程对多条语句只执行了一部分,还没有执行完,另一个线程参与进来执行,导致共享数据的错误。
解决办法: 对多条操作共享数据的语句,只能让一个线程执行完,在执行过程中,其他线程不可以参与执行。
java对于多线程的安全问题提供了专业的解决方式:就是同步代码块。
同步代码块:作用是保证同步中只有一个线程在执行。
synchronized(对象)
{
需要被同步的代码;
}
对象如同锁,持有锁的线程可以在同步中执行。没有持有锁的线程即使获取了cpu的执行权,也进不去,因为没有获取锁。
可以想象一下单人卫生间。进去之前要先判断里面有没有人。
同步的前提:
a、必须要有两个或者两个以上的线程。
b、必须是多个线程使用同一个锁。
好处:解决了多线程的安全问题。
弊端:多个线程需要判断锁,较为消耗资源。
一定要明确的问题:
a、明确哪些代码是多线程运行代码
b、明确共享数据
c、明确多线程运行代码中哪些语句是操作共享数据的。
同步两种表现形式:同步代码块和同步函数(用synchronized修饰函数即可)。
同步函数使用的锁是this。
如果同步函数被静态修饰,那么使用的锁就不会是this,因为静态方法中也不可以定义this。
静态进内存时,内存中没有本类对象,但是一定有该类对应的字节码文件对象。即类名.class。该对象的类型是class。
静态的同步方法,使用的锁是该方法所在类的字节码文件对象。即类名. class。
单例设计模式:饿汉式;懒汉式(延时加载,存在安全隐患,需要设置同步)。
死锁:同步中嵌套同步,同步的锁不一样。
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net