java线程的应用场景有哪些
发表于:2024-12-01 作者:千家信息网编辑
千家信息网最后更新 2024年12月01日,这篇文章主要为大家展示了"java线程的应用场景有哪些",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"java线程的应用场景有哪些"这篇文章吧。解决生产者,
千家信息网最后更新 2024年12月01日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安全错误
数据库的锁怎样保障安全
软件开发哪种专业好
南京云久网络技术
服务器 安全管理
数据库备份的方式有
3ds代理服务器
国产数据库免费软件
为确保网络安全怎么做
主数据库文件的拓展名是
常州数据库修复
rstata数据库
ibm服务器装黑群晖
对远程数据库监听
asp按钮提交到数据库中
netbean怎么连数据库
为者常成网络技术
数据库无法连接很远的服务器
常州高清led大屏服务器
把两个系统的表导入同一个数据库
河南店淘软件开发
数据库手机能学么
phpcache数据库
在什么场景下用到数据库
max服务器渲染怎么弄
软件开发和前端哪个工资高
中国台湾企业软件开发报价
网络安全高尖端人才
数据库单个用户改多个用户
山东省人防网络安全应急预案
数据库查询语句范围查找
饥荒建服务器