一、Thread实现

  1. public class ThreadDemo4 {
  2. publicstaticvoid main(String[] args) {
  3. new ThreadTest4().start();
  4. new ThreadTest4().start();
  5. new ThreadTest4().start();
  6. }
  7. }
  8. class ThreadTest4 extends Thread {
  9. privateinttickets = 100;
  10. publicvoid run() {
  11. booleanloop = true;
  12. while(loop) {
  13. if(tickets > 0) {
  14. System.out.println(Thread.currentThread().getName() + " is sailing ticket " + tickets--);
  15. } else {
  16. loop = false;
  17. }
  18. }
  19. }
  20. }

运行结果:

分析:

从运行结果可以看出,最终打印出了3份数据。说明每个线程独立地拥有一份数据,用Thread实现的多线程之间无法共享数据。

二、Runnable实现

  1. public class ThreadDemo5 {
  2. publicstaticvoid main(String[] args) {
  3. ThreadTest5 t = new ThreadTest5();
  4. new Thread(t).start();
  5. new Thread(t).start();
  6. new Thread(t).start();
  7. }
  8. }
  9. class ThreadTest5 implements Runnable {
  10. privateinttickets = 100;
  11. publicvoid run() {
  12. booleanloop = true;
  13. while(loop) {
  14. if(tickets > 0) {
  15. System.out.println(Thread.currentThread().getName() + " is sailing ticket " + tickets--);
  16. } else {
  17. loop = false;
  18. }
  19. }
  20. }
  21. }

运行结果:

分析:

从运行结果可以看出,最终打印出来的只有一份数据。说明用Runnable实现的多个线程之间共享一份数据。

结论:

两种方法实现多线程的最重要区别是:Runnable实现的多线程共享数据,Thread实现的多线程,每个线程拥有独立的数据。所以在实际项目中,通常用Runnable方式来实现多线程。

Java笔记16:多线程共享数据的更多相关文章

  1. JAVA笔记14__多线程共享数据(同步)/ 线程死锁 / 生产者与消费者应用案例 / 线程池

    /** * 多线程共享数据 * 线程同步:多个线程在同一个时间段只能有一个线程执行其指定代码,其他线程要等待此线程完成之后才可以继续执行. * 多线程共享数据的安全问题,使用同步解决. * 线程同步两 ...

  2. Java基础-线程操作共享数据的安全问题

    Java基础-线程操作共享数据的安全问题 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.引发线程安全问题 如果有多个线程在同时运行,而这些线程可能会同时运行这段代码.程序每次运 ...

  3. java 多线程 day07 多线程共享数据

    /** * Created by chengtao on 17/12/3. * 多个线程 如何共享数据? * 常见实例:多个窗口同时售卖火车票 */public class Thread0701_Mu ...

  4. Thinking in Java——笔记(16)

    Arrays Why arrays are special There are three issues that distinguish arrays from other types of con ...

  5. java 22 - 16 多线程之生产者和消费者的问题

    生产者和消费者问题的描述图 通过上图,我们可以发现: 生产者和消费者使用的都是同一个资源(肉包子) 所以,当使用线程的时候,这两类的锁也是同一把锁(为了避免出现线程安全问题) 例子:学生信息的录入和获 ...

  6. java笔记--关于多线程如何查看JVM中运行的线程

    查看JVM中的线程 --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3890280.html "谢谢-- ThreadGrou ...

  7. java笔记--关于多线程状态的理解和应用

    关于多线程的状态 --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3890266.html  "谢谢-- 线程共有6种状态:1 ...

  8. [Aaronyang] 写给自己的WPF4.5 笔记16[多线程]

      =============潇洒的版权线==========www.ayjs.net===== Aaronyang ========= AY =========== 安徽 六安 杨洋 ======= ...

  9. JAVA 并发编程-多个线程之间共享数据

    原文地址:http://blog.csdn.net/hejingyuan6/article/details/47053409# 多线程共享数据的方式: 1,如果每个线程执行的代码相同,可以使用同一个R ...

随机推荐

  1. Linux 基础——处理文件与目录的命令

    继续第三天学习,每天下班后积累一点点,始终相信厚积薄发. 一.处理文件的命令 touch dest_file:在当前目录下创建指定的文件. cp source dest:将指定的猿文件复制到目标文件, ...

  2. javascript高程笔记:逻辑与和逻辑或

    逻辑与和或 逻辑与 当 && 前后两个操作数都是布尔值,无可厚非,同时为true才为true.与其他强类型语言不同的是,javascript逻辑与前后的操作数可以应用于任何类型. 而且 ...

  3. javascript实现与后端相同的枚举Enum对象

    ; (function (global, undefined) { global.Enum = function (namesToValues) { var enumeration = functio ...

  4. 六十五 async/await

    用asyncio提供的@asyncio.coroutine可以把一个generator标记为coroutine类型,然后在coroutine内部用yield from调用另一个coroutine实现异 ...

  5. Bzoj3837 [Pa2013]Filary(随机化)

    题面 权限题 题解 这题有一个很好的性质,就是一定有$k>\frac n2$.接着考虑怎么做. 我们随机选取一个数$x$,然后将所有数与它作差,那么只需要找出$k$个差值使得他们的最大公因数大于 ...

  6. Linux命令之whereis

    whereis [选项] [文件] (1).选项 -b 只搜索二进制文件 -B <目录> 只在路径下查找二进制文件 -m 只搜索man手册 -M <目录> 只在路径下查找man ...

  7. Spring的消息 Java Message Service (JMS)

     Spring有两种方法提供对EJB的支持: Spring能让你在Spring的配置文件里,把EJB作为Bean来声明.这样,把EJB引用置入到其他Bean的属性里就成为可能了,好像EJB就是另一个P ...

  8. 【大视野入门OJ】1099:歌德巴赫猜想

    Description 歌德巴赫猜想大家都很熟悉吧?给一个数,能够分解成两个素数的和.现在要给你一个n,6 <= n < 1000000,让你求他会分解成哪两个素数?如果存在多组解,则要求 ...

  9. 安卓 内存泄漏检测工具 LeakCanary 使用

    韩梦飞沙 yue31313 韩亚飞 han_meng_fei_sha 313134555@qq.com 配置 build.gradle dependencies { debugCompile 'com ...

  10. 背包系列练习及总结(hud 2602 && hdu 2844 Coins && hdu 2159 && poj 1170 Shopping Offers && hdu 3092 Least common multiple && poj 1015 Jury Compromise)

    作为一个oier,以及大学acm党背包是必不可少的一部分.好久没做背包类动规了.久违地练习下-.- dd__engi的背包九讲:http://love-oriented.com/pack/ 鸣谢htt ...