易截截图软件、单文件、免安装、纯绿色、仅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对象的代码


相关文档:

学习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版

import java.util.Scanner;
public class Game{
  void welcome(){
   println("欢迎来到剪刀石头布游戏");
  }
 Choice getUserChoice(){
  println("请选择\t[1]剪刀\t[2]石头\t[3]布");
  Scanner sc= new Scanner(System.in);
  int userCh ......

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

13.2.1 网络编程步骤
         按照前面的基础知识介绍,无论使用TCP方式还是UDP方式进行网络通讯,网络编程都是由客户端和服务器端组成。当然,B/S结构的编程中只需要实现服务器端即可。所以,下面介绍网络编程的步骤时,均以C/S结构为基础进行介绍。
     ......

java面试题

JAVA面试题集- -
基础知识:
1.C++或Java中的异常处理机制的简单原理和应用。
当JAVA程序违反了JAVA的语义规则时,JAVA
虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发
IndexOutOfBoundsException;访问null的对象时会引发NullPointerExcepti ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号