Java多线程相关(一)

进程与线程:

进程是受操作系统管理的基本运行单元,线程可以理解成是在进程中运行的子任务。

对于单核单线程CPU而言,同时只可运行一个线程,cpu在任务之间不停的切换,由于切换速度非常快,给使用者的感受就是这些任务似乎在同时运行。这是多线程技术的优点,使用多线程也就是在使用异步。

对于多核多线程CPU而言,能够同时运行的线程数增加,相应各任务之间切换速度更加快,所以多核心CPU的运行速度更加快。


线程的start()和run()方法:

Thread.java类中的start()方法通知“线程规划器”此线程已准备就绪,等待调用线程对象的run()方法,具有异步执行的效果。如果使用thread.run()方法就不是异步执行了,而是同步,那么此线程对象并不交给“线程规划器”来进行处理,必须等待run()方法中的代码执行完之后才能调用后面的方法。


实现多线程编程的方式有两种:

继承Thread类,实现Runnable接口。使用继承方式来开发多线程应用程序在设计上是有局限性的,因为Java是单根继承,不支持多继承。Thread.java类也实现了Runnable接口,也就意味着Thread(Runnable target)不光可以传入Runnable接口的对象,还可以将一个Thread对象中的run()方法交由其他线程进行调用。


非线程安全:

非线程安全主要是指多个线程对同一个对象中的同一个实例变量进行操作时会出现值被更改、值不同步的情况,进而影响程序的执行流程。通过在代码前加synchronized关键字加锁来解决问题。


currentThread()方法:

返回当前代码段正在被哪个线程调用的信息。

isAlive()方法:

测试线程是否处于活跃状态即线程已经启动且尚未终止。


判断线程状态是否是停止状态:

this.interrupted():测试当前线程是否已经是中断状态,执行后具有将状态标志清除为false的功能。

this.isInterupted():测试线程Thred对象是否已经是中断状态,但不清除状态标志。

interrupt()方法只是为线程设置中断标记,线程中还需通过if(this.interrupted())和return来中断线程。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 线程基本知识 什么是线程安全性?当多个线程访问某个类时,这个类始终都能表现出正确的行为,那么可以认为这个类是线程安...
    Cheava阅读 4,638评论 0 1
  • Object C中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?如果想延时执行代码、方法又是什么? 1...
    AlanGe阅读 5,808评论 0 17
  • 又来到了一个老生常谈的问题,应用层软件开发的程序员要不要了解和深入学习操作系统呢? 今天就这个问题开始,来谈谈操...
    tangsl阅读 9,631评论 0 23
  • 三个步骤 1、引入jar包 pom.xml中引入包 2、在controller层返回数据,并调用模板 简单配置如下...
    supory阅读 6,343评论 0 1
  • “她已经死了。”奶奶当着我的面,这样说她唯一的孙女。她两眼望着我,眼中没有任何感情,两鬓的白发像干枯的枝桠,在她瘦...
    古喵阅读 4,101评论 0 0