`
catalin
  • 浏览: 16147 次
  • 来自: ...
社区版块
存档分类
最新评论
文章列表
本文为转载,http://student.csdn.net/space.php?uid=44933&do=blog&id=11970 要想解决“脏数据”的问题,最简单的方法就是使用synchronized关键字来使run方法同步,代码如下: <!--<br /> <br /> Code highlighting produced by Actipro Cod ...
也许有人会问,如果只有n++,会产生“脏数据”吗?答案是肯定的。那么n++只是一条语句,又如何在执行过程中将CPU交给其他的线程呢?其实这只是表面现象,n++在被Java编译器编译成中间语言(也叫做字节码)后,并不是一条语言。让我们看看下面的Java代码将会被编译成什么样的Java中间语言。 Java源代码 <!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.c ...
本文为转载,http://student.csdn.net/space.php?uid=44933&do=blog&id=11632 Java中的变量分为两类:局部变量和类变量。局部变量是指在方法内定义的变量,如在run方法中定义的变量。对于这些变量来说,并不存在线程之间共享的问题。因此,它们不需要进行数据同步。类变量是在类中定义的变量,作用域是整个类。这类变量可以被多个线程共享。因此,我们需要对这类变量进行数据同步。 数据同步就是指在同一时间,只能由一个线程来访问被同步的类变量,当前线程访问完这些变量后,其他线程才能继续访问。这里说的访问是指有写操作的访问,如果所有 ...
本文为转载,http://student.csdn.net/space.php?uid=44933&do=blog&id=11460      从线程中返回数据和向线程传递数据类似。也可以通过类成员以及回调函数来返回数据。但类成员在返回数据和传递数据时有一些区别,下面让我们来看看它们区别在哪。 一、通过类变量和方法返回数据 使用这种方法返回数据需要在调用start方法后才能通过类变量或方法得到数据。让我们先来看看例程2-13会得到什么结果。 <!--<br /> <br /> Code highlighting produce ...
本文为转载,http://student.csdn.net/space.php?uid=44933&do=blog&id=10885 在传统的同步开发 模式下,当我们调用一个函数时,通过这个函数的参数将数据传入,并通过这个函数的返回值来返回最终的计算结果。但在多线程的异步开发模式下,数据的传递和 返回和同步开发模式有很大的区别。由于线程的运行和结束是不可预料的,因此,在传递和返回数据时就无法象函数一样通过函数参数和return语句来返回数据。本文就以上原因介绍了几种用于向线程传递数据的方法,在下一篇文章中将介绍从线程中返回数据的方法。     欲先取之,必先予之。 ...
Java多线程初学者指南(6):慎重使用volatile关键字 本文转载,http://student.csdn.net/space.php?uid=44933&do=blog&id=10669     volatile关键字相信了解Java多线程的读者都很清楚它的作用。volatile关键字用于声明简单类型变量,如int、float、 boolean等数据类型。如果这些简单数据类型声明为volatile,对它们的操作就会变成原子级别的。但这有一定的限制。例如,下面的例子中的n就 不是原子级别的: package mythread; public class JoinThread ...
Global site tag (gtag.js) - Google Analytics