首页 > 编程语言 > 详细

多线程 回顾

时间:2021-03-26 21:45:04      阅读:30      评论:0      收藏:0      [点我收藏+]
多线程  回顾
    程序:是一个指令的集合(与语言无关)我们写的代码都是程序
    进程:正在执行的程序,占用一定的资源(内存资源,磁盘等)
    线程:存在再进程中,一个进程中至少有一个线程
 
HTTP     BIO
nginx     NIO
NIO的速度大于BIO,因为BIO在遇到CPU资源被占了,会进入等待,被叫醒会浪费资源、
 
线程的代理设计模式
    明星经纪人接代言的模式   
        明星会把自己会做的事情告诉经纪人,然后经纪人去跟需求商谈
再代码中
    明星和经纪人都是一个实现类,他们实现了相同接口,因为经纪人只会接明星会接代言
实现原理
    使用java的多态
    
线程的状态  
    1.新生状态   创建对象 new
    2.就绪状态    调用start(); 即看到start();
    3.运行状态    抢占CPU资源,执行代码
    4.死亡状态    执行完毕或者抛出异常
            正常情况是上面四种顺序的下来
    5.阻塞状态    程序运行中,线程停了下来,就是阻塞状态
                        导致阻塞状态的原因消失了就会脱离阻塞状态 重新进入就绪状态
                        第一种 :sleep()
                        第二种 :等待IO资源   即IO被正在被使用,需要等待别的使用完毕
    
线程常用的api方法
    1.获取当前线程的名字 Thread.currentThread()
    2.获取线程的名字 thread.getName();
    3.获取线程的id thread.getId
    4.获取线程的优先级 thread.getPriority(); 默认5  范围一般是0-10
    5.设置线程的优先级 thread.setPriority();  设置的优先级高,并不一定就先执行,只是先得概率高
    6.判断线程是否存活 thread.isAlive();
    7.join()代码中强制阻塞线程
    8.sellp()使当前线程进入睡眠状态
 
synchronized的使用
    1.同步代码快synchronized(对象锁){ 同步代码内容 }
          2. 同步方法 synchronized放在方法名中
生产者 消费者问题
    先生产 消费者才能购买
    阐述:使用多线程 当有货物的时候消费者才能购买 使用一个标志,代表是否有货 有货可以购买,没货需要生产
    如果消费者碰到没货则进入阻塞状态,等到生产者生产完毕唤醒购买
    如果生产者碰到有货则进入阻塞状态,等到消费这购买完毕
这里的就是以前的写的 买包子卖包子
 
死锁:两个线程 都需要对方的资源,但是谁也不肯先把资源让出来
 
JUC包 java.util.concurrent  解决多线程实现过程中的抢占唤醒    
 

多线程 回顾

原文:https://www.cnblogs.com/wxgShareBlog/p/14584043.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!