Java学习笔记(六)

二十、多线程

    在Java中要想实现多线程代码有两种手段:

        一种是继承Thread类:

            Thread类是在java.lang包中定义的,一个类只要继承了Thread类,此类就称为多线程操作类。在Thread子类之中,必须明确的覆写Thread类中的run()方法,此方法为线程的主体。如果要想正确的启动线程,是不能直接调用run()方法的,应该调用从Thread类中继承而来的start()方法,才可以启动线程。

        另一种就是实现Runnable接口

            在Java中也可以通过实现Runnable接口的方式实现多线程,Runnable接口中只定义了一个抽象方法:public void run() ;所以一定要覆写run()方法。此时,还是要依靠Thread类完成启动,在Thread类中提供了以下的两个构造方法:

                public Thread(Runnable target)

                public Thread(Runnable target,String name)

        Thread类和Runnable接口的区别:继承Thread的类不适合于多个线程共享资源,而实现Runnable的类则可以方便的实现资源的共享

       线程的休眠:

                在程序中允许一个线程进行暂时的休眠,直接使用Thread.sleep()方法即可

        线程同步:

               所谓的同步就是指多个操作在同一个时间段内只能有一个线程进行,其他线程要等待此线程完成之后才可以继续执行。

            同步代码块:

                    在代码块上加上“synchronized”关键字的话,则此代码块就称为同步代码块。

                    同步代码块格式:

                            synchronized(同步对象){

                                      需要同步的代码 ;

                           }

          同步方法:

                    可以使用synchronized关键字将一个方法声明成同步方法。

                同步方法定义格式:

                        synchronized 方法返回值 方法名称(参数列表){}

二十一、网络编程(java.net.*)

        端口号是一个标记机器的逻辑通信信道的正整数,端口号不是物理实体。IP地址和端口号组成了所谓的Socket,Socket是网络上运行的程序之间双向通信链路的最后终结点。

        端口号是用一个16位的整数来表达的,其范围为0~65535,其中0~1023为系统所保留。因此,当我们编写通信程序时,应选择一个大于1023的数作为端口号,以免发生冲突。

        Socket通信:

                在Java中,基于TCP协议实现网络通信的类有两个:在客户端的Socket类和在服务器端的ServerSocket类。

                在服务器端通过指定一个用来等待的连接的端口号创建一个 ServerSocket实例。

                在客户端通过规定一个主机和端口号创建一个 socket实例,连到服务器上。

                ServerSocket类的accept方法使服务器处于阻塞状态,等待用户请求。

 


            支持多线程:

                    不同的处理线程为不同的客户端服务,主线程只负责循环等待,处理线程负责网络连接,接受客户端输入的信息

二十二、JDBC(基本操作:插查删改、连接数据库)

     主要的代码如下

  importjava.sql.DriverManager;

importjava.sql.SQLException;

importcom.mysql.jdbc.Connection;

importcom.mysql.jdbc.ResultSet;

importcom.mysql.jdbc.Statement;

 

//基本代码

private staticfinal StringURL="jdbc:mysql://localhost:3306/petshop?useUnicode=true&characterEncoding=UTF-8";

private staticfinal String NAME="root";

private staticfinal String PASSWORD="123456 ";

publicConnection conn =null;

//1.加载驱动

                     try {

                            Class.forName("com.mysql.jdbc.Driver");

                     }catch(ClassNotFoundExceptione) {

                            System.out.println("未能成功加载驱动程序,请检查是否导入驱动程序!");

                            e.printStackTrace();

                     }

                    

                     try {

                           conn= (Connection)DriverManager.getConnection(URL, NAME, PASSWORD);

                            System.out.println("获取数据库连接成功!");

                     } catch (SQLException e) {

                            // TODO: handleexception

                            System.out.println("获取数据库连接失败!");

                            e.printStackTrace();

                     }

//添加insert语句

Statementstatement=null;

                     String sql="INSERTINTO pet(kind,name,color,age)"+"VALUES('cat','"+information[0]+"','"+information[1]+"',"+Integer.parseInt(information[2])+")";

                     //System.out.println(sql);

                     try {

                            statement=(Statement)conn.createStatement();

                     } catch (SQLException e) {

                            // TODOAuto-generated catch block

                            e.printStackTrace();

                     }

                     try {

                            statement.executeUpdate(sql);

                     } catch (SQLException e1) {

                            // TODOAuto-generated catch block

                            e1.printStackTrace();

                     }

                     try {

                            statement.close();

                     } catch (SQLException e) {

                            // TODOAuto-generated catch block

                            e.printStackTrace();

                     }

//查询select操作

sql="SELECT* FROM pet WHERE age="+Integer.parseInt(information[2]);

ResultSetresultset=null;

statement=(Statement)conn.createStatement();

resultset=(ResultSet)statement.executeQuery(sql);

resultset.close();

statement.close();

//更新Update操作

sql="UPDATEpet SET age="+Integer.parseInt(information[2])+" WHEREid="+infor_id;

statement=(Statement)conn.createStatement();

statement.executeUpdate(sql);

statement.close();

//删除Delete操作

sql="DELETEFROM pet WHERE age="+Integer.parseInt(information[2]);

statement=(Statement)conn.createStatement();

statement.executeUpdate(sql);

statement.close();

 

 

//最后

conn.close()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值