Java笔记16:多线程共享数据
来源:互联网 发布:mac 桌面日程管理软件 编辑:程序博客网 时间:2024/06/05 04:28
一、Thread实现
public class ThreadDemo4 { publicstaticvoid main(String[] args) { new ThreadTest4().start(); new ThreadTest4().start(); new ThreadTest4().start(); }} class ThreadTest4 extends Thread { privateinttickets = 100; publicvoid run() { booleanloop = true; while(loop) { if(tickets > 0) { System.out.println(Thread.currentThread().getName() + " is sailing ticket " + tickets--); } else { loop = false; } } }}
运行结果:
分析:
从运行结果可以看出,最终打印出了3份数据。说明每个线程独立地拥有一份数据,用Thread实现的多线程之间无法共享数据。
二、Runnable实现
public class ThreadDemo5 { publicstaticvoid main(String[] args) { ThreadTest5 t = new ThreadTest5(); new Thread(t).start(); new Thread(t).start(); new Thread(t).start(); }} class ThreadTest5 implements Runnable { privateinttickets = 100; publicvoid run() { booleanloop = true; while(loop) { if(tickets > 0) { System.out.println(Thread.currentThread().getName() + " is sailing ticket " + tickets--); } else { loop = false; } } }}
运行结果:
分析:
从运行结果可以看出,最终打印出来的只有一份数据。说明用Runnable实现的多个线程之间共享一份数据。
结论:
两种方法实现多线程的最重要区别是:Runnable实现的多线程共享数据,Thread实现的多线程,每个线程拥有独立的数据。所以在实际项目中,通常用Runnable方式来实现多线程。
0 0
- Java笔记16:多线程共享数据
- Java 多线程学习笔记 4 多线程共享数据
- JAVA多线程共享数据
- Java多线程共享数据
- [java多线程]多线程数据共享
- java基础巩固笔记(5)-多线程之共享数据
- java多线程实现数据共享
- JAVA多线程(四)多线程数据共享
- java多线程共享数据和数据并发
- java多线程操作共享数据的安全问题
- Java多线程共享数据、同步、通信
- JAVA多线程的共享数据操作
- Java中多线程之间数据共享
- JAVA多线程的共享数据操作
- java 多线程读取数据注意伪共享
- java基础多线程之共享数据
- java多线程通信之共享数据
- java多线程中关于数据共享
- MySQL查询某个字段属性值重复出现的次数
- PO 采购订单类型
- iOS极光推送
- 图像颜色校正的几种方法
- 反射详解
- Java笔记16:多线程共享数据
- Linux下安装Matlab2014及破解
- 安装Win7时手动命令创建主分区和逻辑分区
- Java反射机制基础详解
- Meta 标签与搜索引擎优化
- SAP MIR7输入数量自动金额的设置
- 我对IOS中代理和block的理解
- 关于虚拟机下Linux操作系统与2440开发板的配置那点事
- 第十章*信号(十九)--sleep函数