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程序(生产+消费)【等待(条件应该相反)+运行+唤醒+切换标志】

  • 相关阅读:
    hdu 5366 简单递推
    hdu 5365 判断正方形
    hdu 3635 并查集
    hdu 4497 数论
    hdu5419 Victor and Toys
    hdu5426 Rikka with Game
    poj2074 Line of Sight
    hdu5425 Rikka with Tree II
    hdu5424 Rikka with Graph II
    poj1009 Edge Detection
  • 原文地址:https://www.cnblogs.com/CGJ-Coco/p/9802785.html
Copyright © 2011-2022 走看看