JAVA中的多线程——练习
JAVA中的多线程——练习
- /*
- * 需求:
- * 银行有一个金库
- * 有两个储户分别存300元,每次存100,存3次
- * 该程序是否有安全问题,有的话如何解决
- *
- * 问题:
- * 哪些代码是多线程运行代码
- * 明确共享数据
- * 明确多线程运行代码中哪些语句是操作共享数据的
- * */
- /**
- * synchronized可以修饰函数,
- * */
- //class Bank {
- // private int sum;
- //
- // public void add(int n) {
- // sum = sum + n;
- // System.out.println("sum=" + sum);
- // }
- //}
- //
- //class Cus implements Runnable {
- // private Bank bank = new Bank();
- //
- // public void run() {
- // for (int x = 0; x < 3; x++)
- // bank.add(100);
- // }
- //}
- //
- //public class ThreadTest2{
- // public static void main(String args[]){
- // Cus cus=new Cus();
- // Thread thread=new Thread(cus);
- // Thread thread2=new Thread(cus);
- // thread.start();
- // thread2.start();
- // }
- //}
- class Bank {
- private int sum;
- //Object object=new Object();
- public synchronized void add(int n) {
- //synchronized (object) {
- sum = sum + n;
- try {
- Thread.sleep(2000);
- } catch (Exception e) {
- // TODO: handle exception
- }
- System.out.println(Thread.currentThread().getName()+"sum=" + sum);
- //}
- }
- }
- class Cus implements Runnable {
- private Bank bank = new Bank();
- public void run() {
- for (int x = 0; x < 3; x++)
- bank.add(100);
- }
- }
- public class ThreadTest2{
- public static void main(String args[]){
- Cus cus=new Cus();
- Thread thread=new Thread(cus);
- Thread thread2=new Thread(cus);
- thread.start();
- thread2.start();
- }
- }
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
这是我最想推荐给程序员们看的基于Python3实现的数据科学书
点击关注异步图书,置顶公众号 每天与你分享IT好书 技术干货 职场知识 参与文末话题讨论,每日赠送异步图书。 ——异步小编 和武侠世界里有少林和武当两大门派一样,数据科学领域也有两个不同的学派:以统计分析为基础的统计学派,以及以机器学习为基础的人工智能派。虽然这两个学派的目的都是从数据中挖掘价值,但彼此“都不服气”。注重模型预测效果的人工智能派认为统计学派“固步自封”,研究和使用的模型都只是一些线性模型,太过简单,根本无法处理复杂的现实数据。而注重假设和模型解释的统计学派则认为人工智能派搭建的模型缺乏理论依据、无法解释,很难帮助我们通过模型去理解数据。 随着云计算和人工智能的发展,数据科学这门新的综合学科被越来越多的人所熟知,业界也普遍看好其在未来的发展前景。体现在就业市场上,与这个行业相关的数据科学家和数据工程师成为了“21世纪最吸引人的职业”。 就像“一千个人眼里有一千个哈姆雷特”一样,对于什么是数据科学也有很多种不同的解读,并由此衍生出很多相关概念,比如数据驱动(data driven)、大数据(big data)、分布式计算(parallel computing)等。...
- 下一篇
JAVA中的多线程——死锁
JAVA中的多线程——死锁 了解死锁,是为了开发中避免死锁。 /* *死锁 *同步中嵌套同步,锁却不同 * **/ classTicket3implementsRunnable{ privateinttick=1000; Objectobject=newObject(); booleanflag=true; publicvoidrun(){ if(flag){ while(true){ synchronized(object){ show1(); } } } else{ while(true) show1(); } } publicsynchronizedvoidshow1(){ synchronized(object){ if(tick>0){ } try{ Thread.sleep(10); }catch(Exceptione){ //TODO:handleexception } System.out.println(Thread.currentThread().getName()+"sale:"+tick--); } } } publicclassDeadLockDemo{...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS关闭SELinux安全模块
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS6,7,8上安装Nginx,支持https2.0的开启