|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你希望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[100];
for (int i = 0; i < threads.length; i++)
threads[i] = new Thread(myThread);
for (int i = 0; i < threads.length; i++)
threads[i].start();
for (int i = 0; i < threads.length; i++)
threads[i].join();
System.out.println("n = " + MyThread.n);
}
}
在实行下面代码的大概了局以下:
n = 59
看到这个了局,大概良多读者会感应奇异。这个程序明显是启动了100个线程,然后每一个线程将静态变量n加1。最初利用join办法使这100个线程都运转完后,再输入这个n值。按一般来说,了局应当是n=100。可恰恰了局小于100。
<p>
主要缺点就是:速度比较慢,没有C和C++快 |
|