• 11.6(day22) 线程 线程安全 线程生命周期 消费者和生产者 网络编程


    线程:

        可独立运行的代码片段。

        属于进程。

    多线程:

        一个进程中有多个可独立运行的代码片段。

    主线程:main

    子线程:

        继承Thread类

        实现Runnable接口

            ---run

        开启线程:

            start

    线程安全问题:

        多线程操作同一个共享资源,还有多行代码编写,其中一个线程对其没有执行完,另一个线程参与执行,有可能导致错误数据产生。

        同步代码块

    线程生命周期:

        新建  可运行  正在运行  消亡

        阻塞:

          sleep(time)

          wait(), notify()/notifyAll()

    消费者和生产者:

        生产线程和消费线程,操作同一个资源,但是操作的任务不同

        wait:使线程处于等待状态,并且会释放锁

        notify:唤醒处于等待状态的线程

        notifyAll:唤醒所有处于等待状态的线程

        以上三个方法是定义在Object类中,必须用在同步中

        jdk5.0后对以上关于锁和线程等待和唤醒方法有优化,使用Lock接口手动获取和释放锁,使用Condition替代了等待和唤醒的方法。

        final  Lock  lock = new ReentrantLock();  //获取锁对象

        final  Condition 生产 = lock.newCondition();  //锁对象与生产线程进行绑定

        final  Condition 消费 = lock.newCondition();  //锁对象与消费线程进行绑定

        public  void  save(){

          lock.lock(); //获取锁

          try{

            if(str != null)

              生产.await(); //等待

            ......

            消费.signal(); //唤醒

            消费.signalAll();

          }finally{

            lock.unlock(); //释放锁

          }

        }

    sleep(time):Thread类中的静态方法,使当前线程休眠一段时间,时间是毫秒值

    wait():Object类中的实例方法,使当前线程处于等待状态,需要被唤醒

    网络编程:

        java.net

        网络通信要素:

           IP地址,端口号(1-65535  1-1024),协议(TCP、UDP)

        UDP:

           面向无连接,不可靠协议,速度快

           数据以数据报包进行发送,不能超过64k

        TCP:

           面向有连接,可考协议,速度慢

           可以发送大量数据

           "三次握手"

        IP对象

     

  • 相关阅读:
    Winform编程总结2—常用的XML读写
    SQL点滴4—筛选数据列的类型,字段大小,是否可为空,是否是主键,约束等等信息
    SSIS常用的包—发送Email任务
    SSIS常用的包—FTP任务
    Centos 下同时安装 Mysql4 和 Mysql5,二进制方式
    iptables 学习笔记
    em是否到了退出的时候
    CentOs 5.2设置DVD为本地yum源
    WAMP环境配置
    Silverlight学习笔记:布局之stackpanel
  • 原文地址:https://www.cnblogs.com/jihongtao/p/9917910.html
Copyright © 2020-2023  润新知