精灵巫婆 发表于 2015-1-18 11:31:56

发布一篇Java多线程初学者指南(9):为何要举行数据同步

你希望java的IDE整合。这个是没有必要的,重要的是你理解java有多深以及怎么组织你的代码,即使没有IDE,代码照样能够编译运行的。
Java中的变量分为两类:部分变量和类变量。部分变量是指在办法内界说的变量,如在run办法中界说的变量。关于这些变量来讲,其实不存在线程之间共享的成绩。因而,它们不必要举行数据同步。类变量是在类中界说的变量,感化域是全部类。这类变量能够被多个线程共享。因而,我们必要对这类变量举行数据同步。
数据同步就是指在统一工夫,只能由一个线程来会见被同步的类变量,以后线程会见完这些变量后,其他线程才干持续会见。这里说的会见是指有写操纵的会见,假如一切会见类变量的线程都是读操纵,通常为不必要数据同步的。
那末假如不合错误共享的类变量举行数据同步,会产生甚么情形呢?让我们先看看上面的代码会产生甚么样的事变:
package test;

public class MyThread extends Thread
{
public static int n = 0;

public void run()
{
int m = n;
yield();
m++;
n = m;
}
public static void main(String[] args) throws Exception
{
MyThread myThread = new MyThread ();
Thread threads[] = new Thread;
for (int i = 0; i < threads.length; i++)
threads = new Thread(myThread);
for (int i = 0; i < threads.length; i++)
threads.start();
for (int i = 0; i < threads.length; i++)
threads.join();
System.out.println("n = " + MyThread.n);
}
}
在实行下面代码的大概了局以下:
n = 59
看到这个了局,大概良多读者会感应奇异。这个程序明显是启动了100个线程,然后每一个线程将静态变量n加1。最初利用join办法使这100个线程都运转完后,再输入这个n值。按一般来说,了局应当是n=100。可恰恰了局小于100。
<p>
主要缺点就是:速度比较慢,没有C和C++快

海妖 发表于 2015-1-21 09:35:57

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。

乐观 发表于 2015-1-22 16:57:08

象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。

小妖女 发表于 2015-1-31 07:51:26

那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!

山那边是海 发表于 2015-2-4 21:50:01

象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。

因胸联盟 发表于 2015-2-10 06:49:45

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

愤怒的大鸟 发表于 2015-2-28 23:52:29

一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从

灵魂腐蚀 发表于 2015-3-1 20:35:20

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

admin 发表于 2015-3-8 14:21:17

如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。

爱飞 发表于 2015-3-16 00:39:04

是一种将安全性(Security)列为第一优先考虑的语言

冷月葬花魂 发表于 2015-3-17 12:18:04

是一种使网页(Web Page)产生生动活泼画面的语言

活着的死人 发表于 2015-3-24 10:00:03

Java是一种计算机编程语言,拥有跨平台、面向对java

柔情似水 发表于 2015-3-30 01:42:05

我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。

再现理想 发表于 2015-4-4 03:19:01

是一种使网页(Web Page)产生生动活泼画面的语言

简单生活 发表于 2015-4-4 13:18:21

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。

精灵巫婆 发表于 2015-4-12 20:50:17

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。

兰色精灵 发表于 2015-4-21 19:42:59

在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

再见西城 发表于 2015-4-24 02:08:46

任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言

莫相离 发表于 2015-4-26 05:10:31

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。

变相怪杰 发表于 2015-6-19 21:21:45

我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
页: [1]
查看完整版本: 发布一篇Java多线程初学者指南(9):为何要举行数据同步