zoukankan      html  css  js  c++  java
  • 网络编程

    网络编程

    TCP/IP四层概念模型

    1. 应用层

    2. 传输层

    3. 网络层

    4. 数据链路层

    IP,端口

    1. IP找到具体地址 PC电脑
    2. 端口定位到电脑上的具体程序
      1. 查看所有端口 netstat -ano
      2. 端口分类:0~1023 公有端口电脑程序自带使用,1024~49151程序注册端口 49152~65535 动态、私有

    多线程

    1. 把jar导入lib文件夹,点击Add as Library就可以直接使用了

    2. 多线程的实现 ,实现Runnable接口,重写Run方法,New Thread去.Start()执行

      public class testThread1 implements Runnable{
          @Override
          public void run() {
              for (int i=0;i<1000;i++){
                  System.out.println("用Runnable接口实现多线程"+i);
              }
          }
          public static void main(String[] args) {
              testThread1 t1=new testThread1();
              new Thread(t1).start();
          }
      }
      

      3.Lambda表达式 (接口为函数试接口可以简化为Lambda表达式,函数式接口:接口只有一个方法)

      public class anonymous {
          public static void main(String[] args) {
              //匿名内部类 (接口NEW接口 大括号里面重写RUN方法)
              Runnable anonymousClass = new Runnable() {
                  @Override
                  public void run() {
                      System.out.println("匿名内部类!");
                  }
              };
              anonymousClass.run();
      
              Runnable lambdas = ()->{
                      System.out.println("Lambda表达式! ");
              };
              //如果Lambda表达式只有一行可以简化为一行,有多行必须用代码块包裹
              lambdas=()->System.out.println("Lambda表达式简化! ");
              //只有一个传值时,可以去掉括号和参数类型lambdas= a->System.out.println("Lambda表达式简化! ");
              //只有多个传值时,参数类型可以全部去掉,或者全部加上,必须加()  (int a,string b)->System.out.println("Lambda表达式简化!");
              lambdas.run();
          }
      }
      

      4.终止线程,使用一个标识位flag终止线程运行(不要使用stop等官方不建议的方法)

      public class threadStop implements Runnable {
          private boolean flag = true;
          int i =0;
          public void run(){
              while (flag){
                      System.out.println("Thread ... Run" + i++);
              }
          }
          public void stop(){//自己写是stop方法,不要用官方JDK中不建议的stop方法
              this.flag=false;
          }
          public static void main(String[] args) {
              threadStop ts=new threadStop();
              new Thread(ts).start();
              for (int i=0; i < 1000; i++) {
                  System.out.println("Thread ... Main" + i);
                  if (i == 666) {
                      ts.stop();
                      System.out.println("Thread 终止 .........." + i);
                  }
              }
          }
      }
      

      5.每个对象都有一把锁,sleep不会释放锁,

      Yield线程礼让,如果A在CPU执行,则A退出CPU,CPU随机让A或B其中一个线程重新调度执行,礼让不一定成功

      Join合并线程,待此线程执行完成后,在执行其他线程,可以想象为插队

      线程分用户线程和守护线程

      用户线程如:Main线程,虚拟机必须确保用户线程执行完毕

      守护线程如:GC回收线程,虚拟机不用等待守护线程执行完毕

      接口NEW接口 大括号里面重写RUN方法(匿名内部类) Runnable anonymousClass = new Runnable() {
                  @Override
                  public void run() {
                      System.out.println("匿名内部类!");
                  }
              };
      接口NEW继承这个接口的Class类,Class类里面重写接口Run方法,NEW的对象点接口里方法实现Class里重写的方法
      Runnable lambdas = ()->{
                      System.out.println("Lambda表达式! ");
              };
      lambdas.run();
      
    3. 线程同步:多个线程操作同一个资源

      并发:同一个对象被多个线程同时操作(安全性:队列+锁)

      同步方法 在方法前加修饰Synchronize 同步的是它本身this

      同步块:Synchronize(Obj){} Obj锁的对象就是变化的量,需要增删改的对象

    4. Lock锁 使用的优先顺序: Lock > 同步代码块 > 同步方法

      class A{
              private final ReentrantLock lock=new ReentrantLock();
          public void m(){
              lock.lock();
              try {
                  //保证线程安全的代码;
              }finally {
                  lock.unlock();
                  //如果同步代码有异常,需要将unlock()写入finally语句块
              }
          }
      }
      
    5. 线程通信 : 管程法(缓冲区) 信号灯法 (flag使用标志位)

      线程池: ExecutorService Executors

  • 相关阅读:
    sqlhelper使用指南
    大三学长带我学习JAVA。作业1. 第1讲.Java.SE入门、JDK的下载与安装、第一个Java程序、Java程序的编译与执行 大三学长带我学习JAVA。作业1.
    pku1201 Intervals
    hdu 1364 king
    pku 3268 Silver Cow Party
    pku 3169 Layout
    hdu 2680 Choose the best route
    hdu 2983
    pku 1716 Integer Intervals
    pku 2387 Til the Cows Come Home
  • 原文地址:https://www.cnblogs.com/DingGuo/p/14928089.html
Copyright © 2011-2022 走看看