用线程工厂创建线程
ThreadFactory接口实现一个线程对象工厂
|
|
|
|
|
|
在线程中处理不受控制的异常
在一个线程对象的run()方法里抛出一个检查异常,我们必须捕获并处理它们。因为run( )方法不接受throws子句。当一个非检查异常抛出,默认的的行为是在控制台写下stack trace并退出程序。
|
|
|
|
|
|
Keep Moving, Keep Learning
ThreadFactory接口实现一个线程对象工厂
|
|
|
|
|
|
在一个线程对象的run()方法里抛出一个检查异常,我们必须捕获并处理它们。因为run( )方法不接受throws子句。当一个非检查异常抛出,默认的的行为是在控制台写下stack trace并退出程序。
|
|
|
|
|
|
在Java中,synchronized是用来表示同步的,我们可以synchronized来修饰一个方法。也可以synchronized来修饰方法里面的一个语句块。但是要注意在static方法和非static方法使用synchronized。大家都知道,static的方法属于类方法,它属于这个类,那么static获取到的锁,是属于类的锁。而非static方法获取到的锁,是属于当前对象的锁。
java的Thread类和Runnable接口
Thread有两种线程,即“守护线程Daemon”与“用户线程User”。守护线程的优先级非常低,通常在程序里没有其他线程运行时才会执行它。当守护线程是程序里唯一在运行的线程时,JVM会结束守护线程并终止程序。守护线程通常用于在同一程序里给普通线程(也叫使用者线程)提供服务。它们通常无限循环的等待服务请求或执行线程任务。它们不能做重要的任务,因为我们不知道什么时候会被分配到CPU时间片,并且只要没有其他线程在运行,它们可能随时被终止。JAVA中最典型的这种类型代表就是垃圾回收器。
setDaemon(boolean on)方法可以方便的设置线程的Daemon模式,true为Daemon模式,此方法必须在线程启动之前调用,当线程正在运行时调用会产生异常。当一个守护线程中产生了其他线程,那么这些新产生的线程不用设置Daemon属性,都将是守护线程。Java垃圾回收线程就是一个典型的守护线程,当我们的程序中不在有任何运行中的Thread,程序就不会再产生垃圾,垃圾回收器也就无事可做,所以当垃圾回收线程是Java虚拟机上仅剩的线程时,Java虚拟机会自动离开。
java的抽象类和接口
abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。 在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是反过来却不是 这样。并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类往往用来表征我们在对问题领 域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。而接口呢,它则是一组规则的集合,它规定了实现本接口的类必须拥有的一组规则。体现了自然界“如果你是……则必须能……”的理念。下面详细分析抽象类和接口以及它们之间的区别。
Hyper Text Transfer Protocol,超文本传输协议,是互联网上使用最广泛的一种协议,所有WWW文件必须遵循的标准。HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全。
Hyper Text Transfer Protocol over Secure Socket Layer,安全的超文本传输协议,网景公司设计了SSL(Secure Sockets Layer)协议用于对Http协议传输的数据进行加密,保证会话过程中的安全性。
HTTP 和 HTTPS 的不同之处:
HTTP 的 URL 以 http:// 开头,而 HTTPS 的 URL 以 https:// 开头
HTTP 是不安全的,而 HTTPS 是安全的
HTTP 标准端口是 80 ,而 HTTPS 的标准端口是 443
在 OSI 网络模型中,HTTP 工作于应用层,而 HTTPS 工作在传输层
HTTP 无需加密,而 HTTPS 对传输的数据进行加密
HTTP 无需证书,而 HTTPS 需要认证证书
java的反射机制
众所周知Java有个Object类,是所有Java类的继承根源,其内声明了数个应该在所有Java类中被改写的方法:hashCode()、equals()、clone()、toString()、getClass()等。其中getClass()返回一个Class类的对象。
Class类十分特殊。它和一般class一样继承自Object,其实体用以表达Java程序运行时的class和interface,也用来表达enum、array、primitive Java types(boolean, byte, char, short, int, long, float, double)以及关键词void,也就是说运行时的class和interface,基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)和关键字 void 也都对应一个 Class 对象。 Class 没有公共构造方法,Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的一个Class object(对象),因此不能显式地声明一个Class对象。
每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象。
一般某个类的Class对象被载入内存,它就用来创建这个类的所有对象。