易截截图软件、单文件、免安装、纯绿色、仅160KB

Java多线程编程中的Synchronized

Synchronized,顾名思义,代表多个线程之间的同步。那么,在java编程中如何使用它呢? 我们假设这样一个情况:对于同一个变量synDemo,我们分别在2个不同的线程中调用synDemo.synMethord1()与synDemo.synMethord2()。 package com.cnblogs.gpcuster;
/**
*
* @author Aaron.Guo
*
*/
public class Tester {
public static void main(String[] args) {
final SynDemo synDemo = new SynDemo();
Thread thread1 = new Thread() {
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
synDemo.synMethord1();
}
};
Thread thread2 = new Thread() {
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
synDemo.synMethord2();
}
};
thread1.start();
thread2.start();
while (true) {
try {
Thread.sleep(1000);
System.out.println("main");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
我们的SynDemo是这样定义的:
package com.cnblogs.gpcuster;
/**
*
* @author Aaron.Guo
*
*/
public class SynDemo{

public void synMethord1() {
while(true) {
try {
Thread.sleep(1000);
System.out.println("synMethord1");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

public void synMethord2() {
while(true) {
try {
Thread.sleep(1000);
System.out.println("synMethord2");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
我们的SynDemo对象没有任何特殊的定义,所以运行起来以后的情况如下:
synMethord2

synMethord1

main

synMethord2

synMethord1

main

synMethord2

synMethord1
接下来,我们给synMethord1添加上synchronized声明,运行情况还是与上次一样,因为我们只有一个线程在调用synMethord1的方法。
我们给synMethord2也添加上synchronized声明,SynDemo对象的代码


相关文档:

java读取xml

package test;
import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
public class XmlTest {
 public static void main(String[] args) {
  File xmlFile=new File("test/xml.xml");
  DocumentBuilderFactory documentBuilderFactor ......

java运行环境 类装载器ClassLoader

  今天观看了蓝山老师java背后的秘密相关视频,发现要想写出高性能的程序,一定要对其运行原理以及其运行环境有相当程度的了解。那ClassLoader是相当关键的一个部分。
  先说下java程序运行的基本流程,先将java文件编译为class文件,然后通过ClassLoader(类加载器),加载到Runtime Data Area(类似于内存)中 ......

学习C与Java的类比

大学的时候选修过一个学期日语,当时日语老师对我们说:“对于中国人来讲,学习英语一般是哭着进去,笑着出来;学习日语则是笑着进去,哭着出来”。意思就是说学习英语的时候,入门的时候比较困难,但是只要坚持学下去,转变了汉语的思维习惯时,最近可以把英语学得很好。而日语不同,一方面因为其与汉语的紧密关 ......

Java Network Game Programming

game
server responsibility:
Initialize
the server socke;

Wait
for a client to connect;

Accept
the client connection;

Create
a daemon thread to support the clien;

Go
back to step 2.

game daemon responsibility:
Accept
client player connection;

Pair ......

Java编程那些事儿102——网络编程技术1

13.2.1 网络编程步骤
         按照前面的基础知识介绍,无论使用TCP方式还是UDP方式进行网络通讯,网络编程都是由客户端和服务器端组成。当然,B/S结构的编程中只需要实现服务器端即可。所以,下面介绍网络编程的步骤时,均以C/S结构为基础进行介绍。
     ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号