java线程的应用场景有哪些
发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,这篇文章主要为大家展示了"java线程的应用场景有哪些",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"java线程的应用场景有哪些"这篇文章吧。解决生产者,
千家信息网最后更新 2024年09月22日java线程的应用场景有哪些
这篇文章主要为大家展示了"java线程的应用场景有哪些",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"java线程的应用场景有哪些"这篇文章吧。
解决生产者,消费者存在问题,可使用如下方法(代码示例包含):
1. 解决数据同步问题:使用同步代码块;
2. 解决重复问题:
加入等待与唤醒机制-->由Object类提供方法:
等待:public final void wait() throws InterruptedException
唤醒第一个等待线程:public final void notify();
唤醒全部等待线程:public final void notifyAll();
代码示例:
** * 生产者消费者实体 * YangKuo 2018/11/15 18:21 */public class Info { private String title; private String content; /** * flag=true 表示可以生产,但不能取走 * flag=false 表示不能生产,可以取走 */ private Boolean flag = true; public synchronized void setInfo(String title, String content) throws InterruptedException { if (!flag) {//此时不能够进行生产,等待取走 super.wait(); } Thread.sleep(100); this.title = title; this.content = content; flag = false;//生产完成 super.notify(); } public synchronized void getInfo() throws InterruptedException { if (flag) {//此时应该生产,不应该取走 super.wait();//等待 } Thread.sleep(100); System.out.println(this.title + "----->" + this.content); flag = true;//消费完成 super.notify(); }}/** * 生产者 * YangKuo 2018/11/15 18:26 */public class Producer implements Runnable { private Info info; public Producer(Info info) { this.info = info; } @Override public void run() { for (int x = 0; x < 50; x++) { if (x % 2 == 0) { try { info.setInfo("张三","一个帅哥"); } catch (InterruptedException e) { e.printStackTrace(); } } else { try { info.setInfo("小白兔","一个可爱的小动物"); } catch (InterruptedException e) { e.printStackTrace(); } } } }}/** * 消费者 * YangKuo 2018/11/15 18:26 */public class Customer implements Runnable { private Info info; public Customer(Info info) { this.info = info; } @Override public void run() { for (int x = 0; x < 50; x++) { try { info.getInfo(); } catch (InterruptedException e) { e.printStackTrace(); } } }}/** * 生产者,消费者测试 * YangKuo 2018/11/15 18:35 */public class Test { public static void main(String args[]) { Info info = new Info(); Producer p = new Producer(info); Customer c = new Customer(info); new Thread(p).start(); new Thread(c).start(); }}
补充:wait()与Sleep方法的区别
wait(): Object类定义的方法,表示线程要等待执行,必须通过notify(),notifyAll()方法唤醒
Sleep(): 是Thread类定义的方法,在休眠到一定时间后将自己唤醒。
以上是"java线程的应用场景有哪些"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
生产
线程
方法
消费
消费者
生产者
场景
应用
代码
内容
篇文章
问题
示例
同步
学习
帮助
可爱
动物
实体
帅哥
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全小组办公室主任卢伟
湖北网络安全高地
软件开发最难的地方
成都网络技术设计师
华硕路由器服务器停止响应
共享网络安全的华文行楷
陕西服务器机箱定做云空间
辽宁专业网络技术服务产品介绍
松江区生态网络技术特点
lol服务器弹不出来怎么办
钉钉邮箱服务器证书怎么关闭
排行榜的数据库设计
迷你世界官方服务器名称
山东安防数显钟服务器
育碧服务器连接不上任务怎么办
软件开发必须依赖计算机环境
成华区网络安全
香港回收服务器
电商保险软件开发
ueditor服务器
新一代数据库技术的特点
吉林智慧供排水系统软件开发商
奉贤区节能软件开发服务商是什么
软件开发云端书籍
如何连接用友软件的数据库
提高网络安全意识共享美好
软件开发费用高
网络安全三原则是什么意思
软件开发周期ppt
软件开发的职业规划怎么说