zoukankan      html  css  js  c++  java
  • Java学习Day1,多线程处理

    IDEA项目结构

    项目 》 模块 》 包 》类

    成员变量

    this表示本类,super表示父类

    使用

    this.访问变量
    this()访问构造方法
    this.()访问方法

    构造方法

    线程与进程

    进程对应正在运行的应用程序

    线程

    是进程中的执行路径

    • 多线程指一个进程中有多条执行路径
    • 单线程指一个进程只有一条执行路径

    多线程的实现方式

    继承Thread类

    • 定义一个类继承
    • 在类中重写run()方法
    • 创建MyThread类的对象
    • 启动线程
    • void start() 导致线程开始执行;开始调用run方法

    写runnable类

    好处在于可以继承父类,适合多个相同程序的代码去处理同一个资源

    Thread类

    无参构造方法

    Thread () {
        this(null,null,"Thread" + nextThreadNum(),0);
    }
    

    带参构造方法

    Thread(ThreadGroup group,Runnable target,String name,long stackSize)
    

    getName获得名称

    Java使用抢占式调度模型

    • getPriority() 获取优先级
    • setPriority() 设置优先级
    • 优先级在10,1之间,默认为5

    方法

    • sleep(long milis) 使正在进行的线程停留指定的毫秒数
    • join()等待这个线程死亡
    • setDaemon(boolean on) 标记为守护线程。当运行的线程都是守护线程时,java虚拟机退出
    • 获取主线程 Thread.currentThread()

    线程的生命周期

    1. 创建线程对象
    2. start(),获得cpu资格,但没有执行权。
    3. run()结束或用stop()结束,成为垃圾
    4. 若执行过程中被其他线程抢夺。回到2,有资格但没执行权
    5. 若使用sleep等方法,进入阻塞状态。

    线程的随机性

    线程同步

    将多个线程使用的同一个数据锁起来,只允许一个线程执行

    synchronized(任意对象)

    同步方法

    synchronized加到方法上

  • 相关阅读:
    中国行业应用软件领域恶性循环的原因是什么?【转载】
    UED之开新窗口
      关于周华健,我觉得有那么几个时期:转
    投影
    undo自动调优介绍
    (原)Oracle事务与Undo段的分配过程
    数据所在的数据块实验
    Oracle 检查点队列与增量检查点
    GC Buffer Busy Waits处理
    如何找出Oracle instance中当前打开游标open cursor的总数?
  • 原文地址:https://www.cnblogs.com/lizinuo/p/15331157.html
Copyright © 2011-2022 走看看