千家信息网

Java多线程技术中所使用的方法有哪些

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章将为大家详细讲解有关Java多线程技术中所使用的方法有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、run()和start()这两个方法应该都比较熟
千家信息网最后更新 2025年01月19日Java多线程技术中所使用的方法有哪些

这篇文章将为大家详细讲解有关Java多线程技术中所使用的方法有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

一、run()和start()

这两个方法应该都比较熟悉,把需要并行处理的代码放在run()方法中,start()方法启动线程将自动调用 run()方法,这是由Java的内存机制规定的。并且run()方法必须是public访问权限,返回值类型为void.

二、关键字Synchronized

这个关键字用于保护共享数据,当然前提是要分清哪些数据是共享数据。每个对象都有一个锁标志,当一个线程访问该对象时,被Synchronized修饰的数据将被"上锁",阻止其他线程访问。当前线程访问完这部分数据后释放锁标志,其他线程就可以访问了。

public ThreadTest implements Runnable{public synchronized void run(){for(int i=0;i<10;i++){System.out.println(" " + i);}}public static void main(String[] args){Runnable r1 = new ThreadTest();Runnable r2 = new ThreadTest();Thread t1 = new Thread(r1);Thread t2 = new Thread(r2);t1.start();t2.start();}}

以上这段程序中的 i 变量并不是共享数据,也就是这里的Synchronized关键字并未起作用。因为t1,t2两个线程是两个对象(r1,r2)的线程。不同的对象其数据是不同的,所以r1和r2两个对象的i变量是并不是共享数据。

当把代码改成如下:Synchronized关键字才会起作用

Runnable r = new ThreadTest();Thread t1 = new Thread(r);Thread t2 = new Thread(r);t1.start();t2.start();

三、sleep()

使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是如果有Synchronized同步块,其他线程仍然不同访问共享数据。注意该方法要捕获异常

比如有两个线程同时执行(没有Synchronized),一个线程优先级为MAX_PRIORITY,另一个为MIN_PRIORITY,如果没有Sleep()方法,只有高优先级的线程执行完成后,低优先级的线程才能执行;但当高优先级的线程sleep(5000)后,低优先级就有机会执行了。

总之,sleep()可以使低优先级的线程得到执行的机会,当然也可以让同优先级、高优先级的线程有执行的机会。

四、join()

join()方法使调用该方法的线程在此之前执行完毕,也就是等待调用该方法的线程执行完毕后再往下继续执行。注意该方法也要捕获异常。

五、yield()

它与sleep()类似,只是不能由用户指定暂停多长时间,并且yield()方法只能让同优先级的线程有执行的机会。

六、wait()和notify()、notifyAll()

这三个方法用于协调多个线程对共享数据的存取,所以必须在Synchronized语句块内使用这三个方法。前面说过Synchronized 这个关键字用于保护共享数据,阻止其他线程对共享数据的存取。但是这样程序的流程就很不灵活了,如何才能在当前线程还没退出Synchronized数据块时让其他线程也有机会访问共享数据呢?此时就用这三个方法来灵活控制。

wait()方法使当前线程暂停执行并释放对象锁标志,让其他线程可以进入Synchronized数据块,当前线程被放入对象等待池中。当调用 notify()方法后,将从对象的等待池中移走一个任意的线程并放到锁标志等待池中,只有锁标志等待池中的线程能够获取锁标志;如果锁标志等待池中没有线程,则notify()不起作用。notifyAll()则从对象等待池中移走所有等待那个对象的线程并放到锁标志等待池中。

关于"Java多线程技术中所使用的方法有哪些"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

线程 方法 数据 对象 优先级 标志 机会 两个 关键 关键字 不同 三个 也就是 作用 篇文章 技术 代码 变量 只有 时间 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 怎么查看数据库中的函数 网络安全5个要素 中江im即时通讯软件开发 数据库怎么添加实体 数据库删除数据保留一部分数据 当下的网络安全形势 福建英才软件开发有限公司 南昌分布式服务器 金融网络安全基础 县级网络安全宣传周新闻稿 一般查询专利的数据库 发票勾选认证平台的数据库 富士施乐打印app服务器地址 停电后怎么启动数据库 联想服务器c盘分多大 VFP数据库表中添加记录 对方服务器无法正常接收或拒绝 安全行业应用图数据库 网络技术理论知识报告 北京华软汇智软件开发公司 北京服务器电源购买 木筏求生steam哪个服务器 眼镜行业软件开发哪家强些 网络安全绿色上网的视频 李云嵌入式软件开发 谦乐网络技术有限公司招聘 软件开发还是项目经理 中科安全可控智能服务器生产线 网络安全大赛kk战队 新闻 淮安通用软件开发技术指导
0