zoukankan      html  css  js  c++  java
  • 【java】多线程编程(不断扩充,但不拆分)

    JAVA中多线程优点

    在于取消了主循环/轮询机制。一个线程暂停不影响程序的其他部分。线程在某一操作(用户输入、读取网络数据)时产生的空闲时间可被利用到其他地方。

    线程状态

    正在运行(Running) --> 挂起(Suspend) --> 恢复(Resume) --> 终止(terminate)。

    注意:线程只要获得CPU时间就可运行。挂起后线程临时中断,允许在其中断地方恢复。线程一旦终止就不可被恢复。

    wait():告知被调用线程放弃进入管程,进入睡眠,直到其他线程进入相同管程,并且调用notify()。

    notify():恢复相同对象第一个调用wait()的线程。
    notifyAll():恢复相同对象中所有wait()的线程,优先级最高的先运行。
    上述三种方法仅在synchronize方法中才能被调用。

    JAVA中创建线程方法

    创建线程的方式有两种。 1、继承Thread类 2、实现Runnable接口

    继承Thread类
    该方法必须重写run()方法,在run()方法中定义需要实现的任务。
    创建好线程对象后,调用start()方法去启动线程。注意,不是调用run()方法启动线程,run方法中只是定义需要执行的任务,如果调用run方法,即相当于在主线程中执行run方法,跟普通的方法调用没有任何区别,此时并不会创建一个新的线程来执行定义的任务。
    若不同线程对象分别调用run()和start()方法,start()方法作为新线程不会阻塞run()方法作为主线程的后续执行。

    实现Runnable接口
    通过实现Runnable接口,定义了一个子任务,然后将子任务交由Thread去执行。注意,这种方式必须将Runnable作为Thread类的参数,然后通过Thread的start方法来创建一个新线程来执行该子任务。如果调用Runnable的run方法的话,是不会创建新线程的,这根普通的方法调用没有任何区别。

  • 相关阅读:
    vue 自定义指令
    vue 插槽
    vue 菜单跳转 页面错乱
    vue项目中使用elementUI的el-tabs组件 浏览器卡死问题 解决办法
    vue 环境配置
    移动端页面 问题 注意事项
    定义全局 强制刷新指令
    手机端样式 处理
    手机访问电脑本地开发的页面
    百度AI
  • 原文地址:https://www.cnblogs.com/liuxs13/p/7794905.html
Copyright © 2011-2022 走看看