线程同步函数就是在普通的函数前边加上synchronized,他和同步代码块是一样的也是当他们指向同一个对象时,来进行的线程互拆,就是下面例子中的sale() 函数那样,但是我就是搞不清楚两个到底有什么区别?
package com.qmxy.lesson9;
public class ThreadDome1 {
public static void main(String[] args) {
TestThread tt=new TestThread();
new Thread(tt).start();
try{Thread.sleep(1);}catch(Exception e){}
tt.st=new String("modth");
new Thread(tt).start();
}
}
class TestThread implements Runnable{
int tick=100;
String st=new String("");
public void run(){
if(st.equals("modth"))
{
while(true){
sale();}
}
else
synchronized(this){
if(tick>0)
{try{Thread.sleep(10);}catch(Exception e){
e.getMessage();
}
System.out.println(Thread.currentThread().getName()+"is slaing tickets...."+tick--);}}
}
public synchronized void sale(){
if(tick>0)
{try{Thread.sleep(10);}catch(Exception e){
e.getMessage();
}
System.out.println("sale()");
System.out.println(Thread.currentThread().getName()+"is slaing tickets...."+tick--);}}
} |