zoukankan      html  css  js  c++  java
  • java--线程

    多任务处理的两种类型

    1.基于进程:

      进程是指一种“自包容”的运行程序,由操作系统直接管理,直接运行,有自己的地址空间,每个进程一开启都会消耗内存。

      特点是允许计算机同时运行两个或多个程序。

    2.基于线程:

      线程是指进程内部单一的顺序控制流。一个进程拥有多个线程,多个线程共享一个进程的内存空间。

      基于线程的多任务处理环境中,线程是最小的处理单位。

    主线程: main方法一运行,就开启主线程。

    特点:

    1.最先开始。

    2.最后结束。

    3.产生其他的子线程。

    4.回收资源。

    线程类:Thread        Thread.sleep(500),程序休眠500毫秒再执行。

      创建和启动Thread线程:

      1.声明一个Thread类,并覆盖run()方法,

      class Thread1 extends Thread{

        public void run(){   //覆盖该方法   }

      }          //当一个子类同时重写run(),start()时,优先调用start();

    ................................................................................

      Thread1 t1=new Thread1();

      t1.start();

      

      2.声明一个实现Runnable接口的类,并实现Run()方法

      class R implements runnable{

        public void run(){    //实现该方法   }

      }

      启动线程,调用start()就会执行run();

    .........................................................

      R r=new R();

      Thread t2=new Thread(r);

      t2.start();

    创建线程时,传入runnable实现类对象,那么线程启动时,会执行该对象的run();

      

    在线程中调用start和run的区别:

      1.如果直接调用run方法是普通的方法调用,不会在主线程的基础上开启子线程,是单线程。

      2.调用start,会在主线程的基础上开启子线程,多个任务同时执行。

    线程优先级:

      当两个或以上的线程同时处于就绪状态,等待CPU执行,优先级高的线程会优先执行,  setPriority(10) ---->设置线程优先级,10最高,1最低,5默认。

    守护线程/精灵线程/后台线程

      t2.setDaemon(true)     别的线程结束,守护线程就结束。

    Thread.join

      把指定线程加入到当前线程,在 B中调用A的join方法,知道A执行完时才执行B

    线程同步(线程安全)

      当两个及以上的线程同时操作一个资源时,别的线程只能等待,当该线程结束对该资源的访问时,才允许别的线程访问。

    同步造成的结果:1.数据安全    2.效率低下

    同步有两种方法:

    1.同步方法:

    public synchronized void test(){}  

    2.同步快:

    public voidrun(){

      synchronized(obj)

    }

     wait和sleep的区别:

    1.sleep方法在线程类Thread中定义,with方法在object中定义;

    2.with只能放在同步方法或同步块中,表示当前线程对资源进行进行等待,sleep方法可以放在任何位置,表示当前线程睡眠;

    3.with方法要释放对象锁,sleep方法不会释放对象锁。

    4.with方法使用后,线程需要notify唤醒后才能继续执行,sleep方法休眠结束后线程自动继续执行。 

      

      

  • 相关阅读:
    Latin1的所有字符编码
    Qt自定义委托在QTableView中绘制控件、图片、文字(内容比较全)
    Delphi5 update1的序列号
    Access Violation at address 00000000.Read of address 00000000 解决办法
    RealThinClient学习(一)
    使用WebDriver遇到的那些坑
    谱聚类(Spectral Clustering)详解
    Asp.net Mvc4默认权限详细(上)
    ASP.NET Web API中的JSON和XML序列化
    [珠玑之椟]估算的应用与Little定律
  • 原文地址:https://www.cnblogs.com/JackieADBM/p/5440650.html
Copyright © 2011-2022 走看看