目录
1、 AutoCloseable接口
应用:项目一般会访问各种资源(建立连接、业务操作、关闭资源)。
内配置一close()方法(incompleted)
public interface IMessage extends AutoCloseable{
public void send(String msg);
}
class NetMessage implements IMessage {
public NetMessage() {
//只要实例化了对象就表示进行消息的发送【建立连接】
System.out.println("【连接】");
}
@Override
public void close() throws Exception {
// AutoCloseable接口里含有的close()方法
}
@Override
public void send(String msg) {
}
}
1.1 AutoCloseable接口作用:
自动关闭资源(资源访问有上限,需要释放资源)。
1.2 AutoCloseable接口特点:
若有异常,仍可进行关闭。
1.3 一些编程例子:
1.3.1 无异常尝试:
package autocloseab;
/**
* @author: pyu
* @Date: 2021/09/09
*/
public interface IMessage extends AutoCloseable{
public void send(String msg);
}
class NetMessage implements IMessage {
public NetMessage() {
//只要实例化了对象就表示进行消息的发送【建立连接】
System.out.println("【连接】...");
}
@Override
public void close() throws Exception {
// AutoCloseable接口里含有的close()方法
System.out.println("【关闭】...");
}
@Override
public void send(String msg) {
System.out.println("【发送】..." + msg);
}
}
package autocloseab;
/**
* @author: pyu
* @Date: 2021/09/09
*/
public class MsgDemo {
public static void main(String[] args) {
NetMessage msg = new NetMessage();
msg.send("pyu, have a nice day!");
}
}
编译结果:
1.3.2 抛出异常尝试(仍可执行close())
package autocloseab;
/**
* @author: pyu
* @Date: 2021/09/09
*/
public interface IMessage extends AutoCloseable{
public void send(String msg);
}
class NetMessage implements IMessage {
public NetMessage() {
//只要实例化了对象就表示进行消息的发送【建立连接】
System.out.println("【连接】...");
}
@Override
public void close() throws Exception {
// AutoCloseable接口里含有的close()方法
System.out.println("【关闭】...");
}
@Override
public void send(String msg) {
if(msg.contains("pyu")) {
throw new RuntimeException("pyu:runtimeException");
}
System.out.println("【发送】..." + msg);
}
}
package autocloseab;
/**
* @author: pyu
* @Date: 2021/09/09
*/
public class MsgDemo {
public static void main(String[] args) throws Exception {
try(NetMessage msg = new NetMessage();) {
msg.send("pyu, have a nice day!");
}
catch(Exception e) {}
}
}
编译结果:(仍可关闭资源)
2、 Runtime类
构造方法为private(私有构造方法),属于单例设计模式。
Runtime.maxMemory()
最大可用内存->一般为物理内存的1/4>totalmemory
Runtime.totalMemory()
可用内存->一般为物理内存的1/64<maxmemory
Runtime.freeMemory()
空余内存