java入门->基础知识7 多线程基础

线程

    程序:指硬盘文件中保存的数据+指令的集合;

    并发执行:多个进程分时交替运行现象称为并发运行;不是同时运行

    操作系统:管理软件的软件(管理程序的程序);

    线程:并发执行的方法;

    进程:正在运行的程序;

    进程与线程的区别:一个进程至少有一个线程;

    创建线程:

        1)Thread类是线程类,继承重写run方法,启动线程时调用线程start();

        2)实现runnable接口,并重写run()方法来定义线程体;

        3)使用匿名内部类来创建线程;

    Thread的静态方法currentThread方法可以用于获取运行当前代码片段的线程;

        Long getId():返回该线程的标识符;

        String getName:返回该线程的名称;

        Thread.yield():线程运行让出方法; 让出cup时间;

    线程优先级:   优先范围:1~10; void setPriority (int priority):设置线程优先级;

        最低:Thread.MIN_PRIORITY

        最高:Threadf.MAX_PRIORITY

        默认:Thread.NORM_PRIORITY

    守护线程:void setDaemon(boolean )为true守护线程;

           特点:当进程中只剩下守护线程时,所有的守护线程强制终止;

                      默认线程都是前台线程,前台线程线程结束的时候,java程序才结束;

                      setDaemon=守护线程=后台线程;

            注意:不能胡乱设置后台线程,后台线程可以被提前结束。软件核心逻辑必须在前台线程中。在不明确情况下,

                       全部线程都使用前台线程;

            java启动的时候会创建一个主线程,主线程会调用main方法,主线程时前台线程。 java启动至少会有一个前台线程。

    sleep方法: static void  sleep(long ms):使当前线程进入堵塞状态;

    sleep是线程类的方法,导致此线程短暂执行指定时间,给执行机会给其它线程,但是监控状态依然保持,到时候会自

             动回复,调用sleep不会释放对象锁; 

    wait是object类的方法,对此对象调用wait方法,导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此

            对象发出notify方法或(notifyAll) 后本线程才进入对象锁定池准备获得对象锁进入运行状态;                

    void  join():等待当前线程结束;

    sleep与join的区别:

        sleep:用于两个线程互相等待情况,线程唤醒,继续执行并结束;

        join:用在一个线程等待另外一个线程结束以后再继续;一个线程已经结束;

    线程同步:synchornized

        同步锁:当一个方法被synchronized修饰后,该方法称之为同步锁方法,多个线程不能同时进入方法内部,那么就等

                      于多个线程要排队执行该方法,避免抢就避免了并发问题。

                      当在方法上使用synchronized时,锁对象就是当前方法所属对象即this;

        同步块:使用synchronized块有效的缩小同步返回可以保证安全的前提下提高效率;

                       使用同步块若想达到同步效果,需要同步监视器(上锁的对象),对于多个对象而言,要看到的是同一个才行;

        静态方法若被synchronized修饰后,所得是当前静态方法所属对象,java中每个类都有一个类对象(class的实例),

       JVM在 加载当前类时会创建一个class的实例来描述当前类,由于每一个类都有且只有一个类对象,所以静态方法一定

         具有同步效果。

        当使用synchronized修饰不同代码片段时,只要多个线程看到的锁对象相同,那么这些代码片段之间就具有了互斥性;

    

        

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值