合理的使用Java多线程可以更好地利用服务器资源。一般来讲,线程内部有自己私有的线程上下文,互不干扰。但是当我们需要多个线程之间相互协作的时候,就需要我们掌握Java线程的通信方式。本文将介绍Java线程之间的几种通信原理。　5.1　锁与同步　在Java中,锁的概念都是基于对象的,所以我们又经常称它为对象锁。线程和锁的关系,我们可以用婚姻关系来理解。一个锁同一时间只能被一个线程持有。也就是说,一个锁如果和一个线程“结婚”(持有),那其他线程如果需要得到这个锁,就得等这个线程和这个锁“离婚”(释放)。　在我们的线程之间,有一个同步的概念。什么是同步呢,假如我们现在有2位正在抄暑假作业答案的同学:线程A和线程B。当他们正在抄的时候,老师突然来修改了一些答案,可能A和B最后写出的暑假作业就不一样。我们为了A,B能写出2本相同的暑假作业,我们就需要让老师先修改答案,然后A,B同学再抄。或者A,B同学先抄完,老师再修改答案。这就是线程A,线程B的线程同步。　可以以解释为:线程同步是线程之间按照　一定的顺序　执行。　为了达到线程同步,我们可以使用锁来实现它。　我们先来看看一个无锁的程序:　public　class　NoneLock　{　static　class　ThreadA　implements　Runnable　{　@Override　public　void　run　(　)　{　for　(　int　i　=　0　;　i　<　100　;　i　++　)　{　System　.　out　.　println　(　"Thread　A　"　+　i　static　class　ThreadB　implements　Runnable　{　@Override　public　void　run　(　)　{　for　(　int　i　=　0　;　i　<　100　;　i　++　)　{　System　.　out　.　println　(　"Thread　B　"　+　i　public　static　void　main　(　String　[　]　args　)　{　new　Thread　(　new　ThreadA　(　)　)　.　start　(　)　;　new　Thread　(　new　ThreadB　(　)　)　.　start　执行这个程序,你会在控制台看到,线程A和线程B各自独立工作,输出自己的打印值。如下是我的