摘要:
我们可以通过synchronized块来同步特定的静态或非静态方法。要想实现这种需求必须为这些特性的方法定义一个类变量,然后将这些方法的代码用synchronized块括起来,并将这个类变量作为参数传入synchronized块。下面的代码演示了如何同步特定的类方法: 1 package com.fly.data; 2 3 public class SyncThread extends Thread { 4 5 private static String sync = ""; 6 private String methodType = ""; 7 8 . 阅读全文
摘要:
synchronized关键字有两种用法。第一种就是在《使用Synchronized关键字同步类方法》一文中所介绍的直接用在方法的定义中。另外一种就是synchronized块。我们不仅可以通过synchronized块来同步一个对象变量, 也可以使用synchronized块来同步类中的静态方法和非静态方法。synchronized块的语法如下:public void method(){ … … synchronized(表达式) { … … }}一、非静态类方法的同步从《使用Synchronized关键字同步类方法》一文中我们知道使用synchroni... 阅读全文
摘要:
要想解决“脏数据”的问题,最简单的方法就是使用synchronized关键字来使run方法同步,代码如下:public synchronized void run(){ ... }从上面的代码可以看出,只要在void和public之间加上synchronized关键字,就可以使run方法同步,也就是说,对于同一个Java类的对象实例,run方法同时只能被一个线程调用,并当前的run执行完后,才能被其他的线程调用。即使当前线程执行到了run方法中的yield方法,也只是暂停了一下。由于其他线程无法执行run方法,因此,最终还是会由当前的线程来继续执行。先看看下面的代码:sychronize... 阅读全文