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

JAVA线程之五:线程的同步

      如果程序是单线程,执行起来不必担心此线程会被其他线程打扰,就像在现实中,同一时间只完成一件事情,可以不用担心这件事情会被其他事情打扰。但是如果程序中同时使用多线程,就好比现实中“两个人同时进入一扇门”,此时就需要控制,否则容易阻塞。为了避免多线程共享资源发生冲突的情况,只要在线程使用资源时给该资源上一把锁就可以了,访问资源的第一个线程为资源上锁,其他线程若想使用这个资源必须等到锁解除为止,锁解除的同时另一个线程使用该资源并为这个资源上锁。
      为了处理这种共享资源竞争,可以使用同步机制。所谓同步机制指的是两个线程同时作用在一个对象时,应该保持对象数据的统一性和整体性。Java提供synchronized关键字,为防止资源冲突提供了内置支持。共享资源一般是文件、输入/输出端口,或是打印机。Java中同步有两种形式,分别介绍如下。
一,同步方法
      同步方法将访问这个资源的方法都标记为synchronized,这样在需要调用这个方法的线程执行完成之前,其他调用标志为synchronized()方法的线程都会被阻塞。可以使用如下代码声明一个synchronized()方法。
synchronized void sum(){...}            //定义一个取和的同步方法
synchronized void max(){...}            //定义一个取最大值的同步方法
上述代码中定义了两个同步方法,其中第一个方法为取和操作,第二个方法取最大值操作,当两个方法同时作用于内存中同一块地址时,如果此对象调用了sum()方法,此时max()方法只能等到sum()方法调用完毕并且释放锁之后才能被调用。
      看如下实例:src\com\wsy\TestSynchronizedThread.java完整代码:
package com.wsy;
public class TestSynchronizedThread extends Thread
{
      private char cha;
      public TestSynchronizedThread(char cha)
     {
            this.cha=cha;
      }
      synchronized void printch()
    &


相关文档:

JAVA线程之四:线程状态检查,后台线程及线程组

一,线程状态的检查
      一般情况下无法确定一个线程的运行状态,对于这些处于未知状态的线程,可以通过isAlive()方法用来确定一个线程是否仍处在活动状态。当然即使处于活动状态的线程也并不意味着这个线程一定正在运行,对于一个已开始运行但还没有完成任务的线程,这个方法返回值为true。
......

总结几种Java字符串反转的实现方法

用三种方法来实现字符串的反转
/**
* @(#)ReverseString.java
*
* ReverseString application
*
* @author
* @version 1.00 2010/4/20
*/
import java.util.*;
import java.io.*;

public class ReverseString {


public static void main(String[] args) throws IOException{
......

Java 字符集编码

首先看清楚几种常用的字符集编码(java语言是采用unicode字符集编码来表示字符与字符串的):
  ASCII(American Standard Code for Information Interchange,美国信息互换标准代码),是基于常用的英文字符的一套电脑编码系统。我们知道英文中经常使用的字符、数字符号被计算机处理时都是以二进制码的形式出现的。这种二进 ......

Java和.NET继续争斗的四大相关问题

【51CTO精选译文】在本篇文章中,著名程序员Justin James讨论了Java的未来,以及Java与.NET的开发成本对比,和Java是否能够取代.NET。Justin在文中总结了四大要点,重点关注了两个运行时在性能和成本上的异同之处。
1、Java SE 7遭遇.NET CLR会发生什么?
从Java SE 7的功能列表中可以看出,它相比以前版本有了长足提高。 ......

Java NIO类库Selector机制解析(下)

 
Java NIO类库Selector机制解析(下)
 
赵锟   陈皓
http://blog.csdn.net/haoel
 
<<<<点此查看本文上篇
五、  迷惑不解 : 为什么要自己消耗资源?
 
令人不解的是为什么我们的Java的New I/O要设计成这个样子?如果说老的I/O不能多路复用,如下图所示,要开N多的线程去 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号