多线程共享资源案例
来源:互联网 发布:淘宝上架宝贝数量 编辑:程序博客网 时间:2024/05/20 06:42
最近研究了一下多线程,主要针对于多线程共享同一资源,和多线程执行各自的资源
其实主要要就是搞清楚资源的含义:你要操作什么,什么就是线程的资源!
1.先说一下多线程执行各自的资源:
执行各自的资源从字面意思就可以看出来线程执行的资源互不干涉,各自执行各自的。
案例如下:
package TestThread;public class TicketsThread { public static void main(String[] args) { Tickets tickets1 = new Tickets(); tickets1.start(); Tickets tickets2 = new Tickets(); tickets2.start(); }}class Tickets extends Thread{ private int num=10; @Override public void run() { while(num>0){ sale(); } } synchronized void sale() { if(num > 0){ System.out.println(Thread.currentThread().getName() + "卖出一张票,还剩余"+ (--num) + "张票。"); try{ Thread.sleep(100); }catch(InterruptedException e){ e.printStackTrace(); } } } }
控制台输出:
次案例我开了两个线程,操作各自的资源!
这是我开启的两个线程:
Tickets tickets1 = new Tickets(); tickets1.start(); Tickets tickets2 = new Tickets(); tickets2.start();
从控制太打印结果可以看出来,各自操作各自的10张票,互不干涉,
这段代码是打印线程名称:
Thread.currentThread().getName()
2.说一下多线程共享同一资源:
共享同一资源源从字面意思就可以看出来两个以上线程执行同一资源。
案例如下:
package TestThread;public class TicketsThread { public static void main(String[] args) { Tickets tickets = new Tickets(); new Thread(tickets).start(); new Thread(tickets).start(); }}class Tickets extends Thread{ private int num=10; @Override public void run() { while(num>0){ sale(); } } synchronized void sale() { if(num > 0){ System.out.println(Thread.currentThread().getName() + "卖出一张票,还剩余"+ (--num) + "张票。"); try{ Thread.sleep(100); }catch(InterruptedException e){ e.printStackTrace(); } } } }
控制台打印结果:
此案例我开了两个线程操作以同一资源类似于火车站两个窗口同时卖票系统,
两个线程操作共同的10张票,按照顺序依次递减,
以下是操作同一资源的代码:
Tickets tickets = new Tickets(); new Thread(tickets).start(); new Thread(tickets).start();
这样就很轻松的理解了多线程操作同一资源,和各自资源!!!!!
阅读全文
0 0
- 多线程共享资源案例
- 多线程共享资源
- 多线程共享资源
- 多线程共享资源参考
- 多线程共享资源冲突
- 多线程共享资源冲突
- 多线程共享资源冲突
- 多线程不同步读写共享资源
- 解决多线程 共享资源
- Java多线程之共享资源
- java多线程之共享资源
- 玩玩Java多线程共享资源
- Java多线程共享资源
- Java多线程共享资源
- ios-多线程访问共享资源
- 多线程共享资源问题演示
- C++多线程共享资源加锁
- java 多线程 访问一个共享资源
- 虚函数&多态
- 将10进制数字转化为26进制用A-Z来表示(华为笔试题第二题)
- JavaWeb——JSP内置对象request,response,重定向与转发 学习总结
- rqnoj 117
- 直接在标签当中定义
- 多线程共享资源案例
- BigDecimal比较大小,BigDecimal保留几位小数,BigDecimal和0比较大小
- android string.setSpan
- 第四课: 易语言大漠剑侠情缘多线程木人巷主线程
- 关于Java基础需要注意的点
- 学习c++拷贝函数有感
- Android源码编译(二)开始编译
- Android 冷启动与热启动
- Nginx实践01-ngnix编译安装