什么是java多线程

发布时间:2021-06-24 14:01:29 作者:chen
来源:亿速云 阅读:114

本篇内容主要讲解“什么是java多线程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“什么是java多线程”吧!

线程声明周期

线程的五个状态:新建,就绪,运行,阻塞,死亡。 其中就绪和运行两个状态客户互相转换,但运行到阻塞,阻塞到就绪,只能单向转换。

刚new出的线程就是【新建】状态,调用start之后就是就【绪状】态,获取CUP资源并执行后就是【运行】状态,CUP用完/sleep()/调用阻塞IO/被suspend()挂起/正在获取其他线程同步监视器/等待通知等这些行为都有可能让线程从【运行】进入【阻塞】状态。

创建线程三种方式及对比

优劣对比

控制线程

join()等待别的线程:在某个线程中调用其他线程的join()方法,就会让当前线程进入阻塞,直到被join线程执行完毕。通常会在主线程中调用join()方法,这样可以保证所有子线程都结束了,主线程才结束。

setDaemon():在start()之前调用线程自身的setDatemon()可以设置成后台线程:如果所有前台线程都死亡,后台线程会自动死亡。

sleep(): 通过Thread.sleep() 可以让当前线程进入【睡眠】状态,在睡眠时间到达之前,即使有可用CUP,线程也无法执行,醒来的线程也只能进入就【绪状】态。

yield():通过Thread.yield()可以设置线程的优先级(用数字或者常量),使线程进入【就绪】状态,相当于暂停线程。只有优先级等于或高于当前线程的线程,才有可能获取CUP资源执行,否则当前线程将继续执行。

线程同步

是为了解决经典的生产者消费者问题(保证事务处理的原子性,例如多个线程向同一个账户存钱取钱,存钱和取钱各自都需要是一个原子操作)。

线程同步的方法,

死锁

两个线程互相等待对方(释放同步监视器),就会进入死锁。

例如线程1线锁定A对象,接着睡眠,线程2锁定B对象,也睡眠,然后线程A醒来,如果此时去请求B对象监视器,A将被阻塞,如果B醒来也去请求A监视器,B也将阻塞,并且A和B此时各自持有一个监视器又在互相请求对方监视器,将进入死锁。

 线程通信

线程通信可以保证线程执行的先后顺序。

通常有三种通信方式,

到此,相信大家对“什么是java多线程”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

推荐阅读:
  1. java多线程案例
  2. 如何实现Java多线程

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:webpack4.0+vue2.0如何利用批处理生成前端单页或多页应用

下一篇:Python中django框架输入汉字,数字,字符生成二维码的示例分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》