做的东西
下面的代码实现了一个模型,那就是开了五个线程,大家共同维护一个状态,一起数数,一直到有人数到1500为止。
思路
把数数的那部分代码同步(synchronized),同步之后五个线程每次都进去数数都有锁的状态,然后找到当时对应的变量,然后+1输出自己的状态,最后到count变量为1500时,停止输出。
注意事项
注意开的线程必须来自于不同的对象,不然的话锁就是相同的,这样的话最后锁被一个线程所占据,最后一个线程就干完了所有的活,所以注意要开多个对象
实现的代码
package Thread;
public class SynThreadMain {
public static void main(String[] args) throws InterruptedException{
final int THREAD_NUM =
5;
Thread threads[] =
new Thread[THREAD_NUM];
for(
int i=
0;i<THREAD_NUM;i++){
threads[i] =
new Thread(
new SyncThread(),
"线程"+i);
threads[i].start();
}
}
}
class SyncThread implements Runnable{
private static int count;
public SyncThread(){
count =
0;
}
public synchronized
void method(){
do{
count++;
System.out.println(Thread.currentThread().getName()+
" :"+
count);
}
while(
count<
1500);
}
public synchronized
void run(){
method();
}
}