zoukankan      html  css  js  c++  java
  • JAVA学习

    JAVA学习----多线程
    ***
    一.创建线程方式
    1.方式一
    ![](https://i.imgur.com/9eegwfe.png) (1)创建:继承Thread+重写run(extends)
    		StartThread st=new StartThread();
    

    (2)启动:创建子类对象+启动

    st.start();//开启线程,交给CPU去调用,不保证立即运行  
    
    2.方式二
    (1)创建:实现runnable+重写run(implements)

    (2)启动:创建实现类对象++Thread对象启动

    推荐这种接口方式:
    (1)避免单继承的局限性,优先使用接口
    (2)方便共享资源
    ①创建实现类对象

    StartRun sr=new StartRun();  
    

    ②创建代理类对象

    Thread t=new Thread(sr);  
    

    ③启动

    t.start();  
    
    *进一步简化(用lambda):
    ①外部类(放在主类外部):
    class Like implements ILike{
    @Override
    public void lambda() {
    	System.out.println("I Like You!1");	
         }
    }  
    

    ②静态内部类(放到主类):

    static class Like2 implements ILike{
    

    ③方法内部类(放到main函数内):

    class Like3 implements ILike{
    

    ④方法匿名内部类:

    like4=new ILike() {  
    

    ⑤lambda简化:

    		like=() ->{
    			System.out.println("I Like You!5");
    		};  
    

    最后都要加:

    like.lambda();  
    
    二.线程状态
    ![](https://i.imgur.com/4VgXrRt.png)

    isAlive():线程是否还活着 ;

    Thread.currentThread():当前线程 ;

    设置名称:真实角色+代理角色:setName,getName:代理名称 ,真实名称由面向对象来设置 ;

    sleep模拟网络延时;

    yield礼让线程,暂停线程,直接进入就绪状态,不是阻塞状态;

    Join:合并线程插队线程

    Daemon守护线程:为用户线程服务,JVM不用等待守护线程执行完毕,默认用户线程,JVM等待用户线程执行,否则不会完毕;

    优先级代表概率,不代表先后顺序;

    终止线程:

    • 1.线程正常执行完毕,次数
    • 2.外部干涉,加入标识
    • 不要用stop
    三.线程协作
    (生产者,消费者模式)

    1.管程法 (加缓冲区) : 【程序前后顺序】

    ①生产者:继承Thread,结构体,重写run(生产具体事项:输出+生产)
    ②消费者:继承Thread,结构体,重写run(消费具体事项:输出)
    ③缓冲区:定义一个缓冲区,两个 synchronized程序(生产+消费)【等待+运行+通知】
    ④馒头
    2.信号灯法(借助标志位):【编程先后顺序】
    ①制定大体框架:生产者,消费者,同一个资源
    ②生产者,消费者都继承Thread(都从生产者开始写,消费者复制即可)
    ③生产者,消费者都重写run(都从生产者开始写,消费者复制+改动即可)
    ④同一个资源:定义主要参数+标志位
    ⑤两个 synchronized程序(生产+消费)【等待(条件应该相反)+运行+唤醒+切换标志】

  • 相关阅读:
    内存溢出和内存泄漏的区别
    java 23种设计模式 深入理解
    关于安装office注册表权限的解决方法
    Tomcat在Linux上的安装与配置
    初窥Linux 之 我最常用的20条命令
    redis使用初体验
    学习进度条——第12周
    找水王
    学习进度条——第11周
    学习进度条——第10周
  • 原文地址:https://www.cnblogs.com/CGJ-Coco/p/9802785.html
Copyright © 2011-2022 走看看