龙空技术网

分享Java小知识,你准备好了吗?

成都汉羿科技有限公司 46

前言:

现在姐妹们对“java程序执行原理”大致比较讲究,看官们都想要分析一些“java程序执行原理”的相关资讯。那么小编同时在网上汇集了一些关于“java程序执行原理””的相关内容,希望看官们能喜欢,姐妹们一起来学习一下吧!

一、socket的过程

1、服务器端启动:服务器端创建一个 Socket 对象,并通过指定 IP 地址和端口号来绑定 Socket。

2、监听连接:服务器端开始监听指定的端口,等待客户端的连接请求。

3、客户端请求连接:客户端创建一个 Socket 对象,并指定服务器的 IP 地址和端口号。客户端发起连接请求后,与服务器建立起连接。

4、服务器接收连接:服务器端接收到客户端的连接请求后,通过 accept() 方法创建一个新的 Socket 对象,该新的 Socket 用于与客户端进行通信。

5、数据传输:在连接建立后,服务器和客户端之间可以进行双向的数据传输。服务器和客户端通过读取和写入 Socket 的输入流和输出流来进行数据的发送和接收。

6、关闭连接:当通信结束或者需要断开连接时,服务器端或客户端可以调用 Socket 的 close() 方法来关闭连接。关闭连接后,服务器和客户端都无法再发送或接收数据。

二、对面向对象的理解

面向对象的编程有以下特点:

1、封装性:将数据和行为封装在对象中,对象对外暴露有限的接口,隐藏内部实现的细节。这样可以提高代码的可维护性和可复用性,减少了代码的耦合性。

2、继承性:通过继承关系,可以在已有类的基础上进行扩展和重用。子类可以继承父类的属性和方法,同时可以添加新的属性和方法,实现代码的继承和扩展。

3、多态性:多态是指同一种行为具有多种不同表现形式的特性。通过继承和接口,可以实现多态性。多态性能够提高代码的灵活性和可扩展性,使得程序更加易于扩展和维护。

三、Java的异常处理机制

Java 的异常处理机制基于以下几个关键概念:

1、异常类:Java 提供了一套预定义的异常类,分为两个大类,分别是检查异常(Checked Exception)和非检查异常(Unchecked Exception)。检查异常必须在代码中显式捕获或声明抛出,而非检查异常(如运行时异常和错误)可以选择性地捕获或声明抛出。

2、try-catch-finally 块:通过 try-catch-finally 块,可以捕获和处理异常。try 块中包含可能抛出异常的代码,catch 块中指定要捕获的异常类型,并在捕获到指定异常后执行相应的处理逻辑,finally 块中的代码在无论是否发生异常都会被执行。

3、throw 和 throws 关键字:throw 关键字用于抛出指定的异常对象,以便在代码的某个地方引发异常。throws 关键字用于声明可能抛出的异常,在方法签名中指定方法可能引发的异常。

4、异常处理链:异常处理链指的是当一个方法抛出异常时,它可以选择捕获异常并处理,也可以选择继续抛出异常,由调用它的方法来处理。这样的处理方式可以将异常沿着调用链向上抛出,直到被某个方法捕获并处理。

四、wait()和sleep()的区别

1、wait() 方法属于 Object 类,而 sleep() 方法属于 Thread 类。wait() 方法用于线程间的协作,而 sleep() 方法用于线程的暂时休眠。

2、wait() 方法必须在同步代码块或同步方法中调用,而 sleep() 方法可以在任意位置调用。

3、wait() 方法会释放当前线程持有的锁,并且将当前线程挂起,使其进入等待状态,直到其他线程调用了相同对象的 notify() 或 notifyAll() 方法进行唤醒。而 sleep() 方法只是使线程休眠指定的时间,不释放锁。

4、wait() 方法需要捕获 InterruptedException 异常,而 sleep() 方法不需要。

5、wait() 方法被调用后,线程会释放CPU资源,让出执行权,进入等待队列。而 sleep() 方法只会使线程暂时休眠,不会释放CPU资源。

五、volatile的用法及原理

使用 volatile 修饰的变量具有以下特点:

1、可见性:对一个 volatile 变量的写操作会立即被其他线程可见,同样,一个线程对 volatile 变量的读操作也会读取到最新的值。

2、禁止指令重排序:volatile 变量的读写操作会禁止在其前后的指令重排序,即保证了有序性。

使用 volatile 的常见场景有:

1、状态标志位:多个线程共享一个变量作为标志位,用于控制线程的启动、停止或某个任务的完成。

2、双重检查锁定(Double-Checked Locking):在单例模式中,通过使用 volatile 修饰单例对象的引用,在多线程环境下可以安全地进行延迟初始化。

3、线程停止标志:使用 volatile 修饰一个 boolean 类型的变量,作为线程停止的标志,通过改变该变量的值来控制线程的停止。

关注我,带你了解更多的有趣的知识。

汉羿科技,专注智慧社区、物联网平台,欲了解相关项目演示平台,可加V“jiaoxc”。

标签: #java程序执行原理