1. 程式人生 > >java在子執行緒與主執行緒傳遞資料(回撥函式)

java在子執行緒與主執行緒傳遞資料(回撥函式)

預習知識點: 什麼是回撥函式? 下面是知乎大神的回答,簡直不能再精闢

程式碼:

package kun.thread;

public class THread 
{
	static C c=new C();
	//flag用來標誌子執行緒執行結束
	static boolean flag=false;
	
	public static void main(String []arg)
	{	
		
		c.setvalue(12);
		System.out.println("子執行緒執行之前value的值是:"+c.getvalue());	
		System.out.println("執行子執行緒");	
		
		
		Thread mythread = new MyThread(c);
		mythread.start();
		
		//等待子執行緒執行結束
		while(!flag);
		System.out.println("子執行緒執行之後value的值是:"+c.getvalue());	
	}	

	public static void callback()
		{
			System.out.println("子執行緒執行結束");	
			flag=true;
		}
}


class C
{
	private int value=0;
	public int getvalue()
	{
		return value;
	}
	public void setvalue(int v)
	{
		this.value=v;
	}
}



class MyThread extends Thread
{
	public MyThread(C cc)
	{
		this.cc=cc;
	}
	private C cc;
	@Override
	public void run() 
	{
		cc.setvalue(20);			
		THread.callback();//很像C#的委託和事件
	}
}