在常见项目开发中,我们通常需要创建多个线程去应对不同的任务,但是线程之间的通信又让人非常头疼,下面小编就为你讲解一些关于线程之间的通讯方式,希望对你有所帮助。
一、同步,通过synchronized关键字实现多线程间通信
由于线程A和线程B持有同一个MyObject类的对象object,尽管这两个线程需要调用不同的方法,但是它们是同步执行的,例如:线程B需要等待线程A执行完了methodA方法之后,它才能执行methodB方法。这样,线程A和线程B就实现了 通信。
这样的方式,本质上就是共享内存式的通信。
多个线程需要访问同一个共享变量,谁获到了锁(获得了访问权限),谁就可以执行。
二、通过while轮询实现线程通信
在这样的方式之下,线程A不断地改变条件,线程ThreadB不停地通过while语句检测这个条件(list.size==5)是否成立 ,从而实现了线程间的通信。
这种方式存在一个问题:
线程都是先把变量读取到本地线程栈空间,然后再去再去修改的本地变量。
所以,当线程B每次都在取本地的 条件变量,那么尽管另外一个线程已经改变了轮询的条件,它也察觉不到,从而形成了死循环。
以上就是关于线程通信的各种方式实现了,想知道更多关于Java一些知识问答的知识,请持续关注本站。