zoukankan      html  css  js  c++  java
  • 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对象

     

  • 相关阅读:
    高频交易程序竟然是饿罗斯人开发的?
    系统功能在用户测试阶段被推翻
    去新华书店有感
    金桔
    结香
    金钟花
    金丝桃
    箬竹
    香茶菜
    水果兰
  • 原文地址:https://www.cnblogs.com/jihongtao/p/9917910.html
Copyright © 2011-2022 走看看