zoukankan      html  css  js  c++  java
  • 学习java线程学习笔记


       线程:代码执行的一个分支
              主要作用是提高了效率,cpu能同时执行多个部分的代码。
          线程的创建:两种方式
          a.继承于thread类,重写run方法。
          b.实现了runable接口,实现run方法。
          
                启动线程必须用线程的start方法;如果直接调用线程的run方法则就是单线程了。
          有一个对象启动两个线程和两个对象启动两个线程的区别:一个对象启动两个线程,两个线程中的修改的内容始终是针对同一个对象的。两个对象启动
          两个线程,线程中修改的内容是针对不同的对象。
          
        Thread类:部分方法
        start()  使该线程开始执行;Java 虚拟机调用该线程的 run 方法。
        getPriority() 返回线程的优先级。
        setPriority(int newPriority)  更改线程的优先级。        
        currentThread()    返回对当前正在执行的线程对象的引用。         
        setName(String name)  改变线程名称,使之与参数 name 相同。       
       
       线程的状态:
        1.新建 :      new一个线程后线程处于新建状态
        2.就绪 :      当一个线程调用了start方法之后 处于就绪状态(注意太调用了此方法并不一定立刻去执行线程的方法)
        3.运行 :      线程在执行的run方法的时候处于运行状态
        4.睡眠 :      线程调用了sleep方法之后处于休息状态(此状态当休息时间到了之后立刻就转为就绪状态)
        5.等待 :      线程调用了wait方法之后处于等待状态。
        6.死亡 :      run方法执行完毕。
       等待状态与睡眠时间状态的区别:
                                   睡眠状态是时间到了自然处于就绪状态,只有CPU分配了事件片,立刻就可以继续执行。
                                   等待状态是如果没有线程通知的话,等待状态永远醒不过来了.
          
          常用方法:
          a.currentTHread():静态方法。获取当前的线程。
          b.getName():获取线程的名字
          c.setName():设置线程的名字(没有设置则有默认的名字)
          d.sleep():让线程休息一段时间。
          e.join():合并线程,让两个线程合并一个线程。
          f.yeild():当前线程让出cpu,当前线程处于一个就绪状态
          g.setPriority():设置线程的优先级。默认的级别是5.优先级从1~10;
          
          线程的同步: 多个线程同时执行某段代码就会出现线程同步。此时结果不可预料.
              防止线程同步:采用synchronized关键字修饰需要进行同步的代码。
            synchronized的原理:是对资源加一把锁,当一个线程进入此资源执行代码的时候,立刻加锁,其他的线程
            执行处于等待状态。一直到此线程释放锁后,其他线程才能进入此资源执行代码。
                  
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
         

  • 相关阅读:
    Delphi实战中讲解FormCreate,FormShow,FormActivate
    delphi Try except on e:Exception do
    Delphi处理数据网格DBGrid的编辑框 获取还没有提交到数据集的字段文本
    delphi dbgrid中如何自动生成序号
    DBDateTimePicker;
    Delphi控件开发浅入深出(八)
    delphi中日期类型TDateTime使用总结
    在DBGrid录数据时,如何判断光标位置是在数据的最左或最右,如果是最左或最右则在按左右光标键时光标跳到上一格或下一格,如果是在数据中
    请问如何按Enter键让DBGrid的光标向右移以及换行?(0分)
    tdbgrid中用enter仿真tab键盘_delphi教程
  • 原文地址:https://www.cnblogs.com/ouysq/p/4437475.html
Copyright © 2011-2022 走看看