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对象

     

  • 相关阅读:
    第4月第1天 makefile automake
    第3月30天 UIImage imageWithContentsOfFile卡顿 Can't add self as subview MPMoviePlayerControlle rcrash
    第3月第27天 uitableviewcell复用
    learning uboot fstype command
    learning uboot part command
    linux command dialog
    linux command curl and sha256sum implement download verification package
    learning shell script prompt to run with superuser privileges (4)
    learning shell get script absolute path (3)
    learning shell args handing key=value example (2)
  • 原文地址:https://www.cnblogs.com/jihongtao/p/9917910.html
Copyright © 2011-2022 走看看