工作了一年了,一直沒怎么多用線程一塊,好薄弱,,今天看了看。自己寫了個小例子。免的以后忘了。做的主要是線程監控返回值。即不用輪訓,和設置變量。讓線程通知主類(我做完活東西給你了。)
直接上代碼吧。
- package com.bjz;
- /**
- * 實現
- * @author bjz
- *
- */
- public interface CallbackListener {
- public void srtartCallbackThread();
- public void print(String returnResult); //主要實現方法,為什么不紅了???
- }
接口只要是供調用線程的類實現。從而實現線程和調用方法的解耦(ps:線程對主類)
- package com.bjz;
- public class Reciver implements CallbackListener {
- private String num;
- private int count;
- String result;
- public Reciver(String num, int count) {
- this.num = num;
- this.count = count;
- }
- @Override
- public void srtartCallbackThread() {
- CallbackAndThread callbackAndThread = new CallbackAndThread(num, count);
- callbackAndThread.addList(this);
- new Thread(callbackAndThread).start();
- }
- [color=darkred]@Override
- public void print(String returnResult) {
- this.result = returnResult;
- System.out.println(result);
- }[/color] //主要實現方法,為什么不紅了???
- }
下來就是線程了
- package com.bjz;
- import java.util.List;
- import java.util.ListIterator;
- import java.util.Vector;
- public class CallbackAndThread implements Runnable {
- private String note;
- private int count;
- private List listenerList = new Vector();
- public CallbackAndThread(String note, int count) {
- this.note = note;
- this.count = count;
- }
- public void addList(CallbackListener listener) {
- listenerList.add(listener);
- }
- public void removeList(CallbackListener listener) {
- listenerList.remove(listener);
- }
- [color=darkred]
- public synchronized void returnResult(String note, int count) {
- ListIterator iterator = listenerList.listIterator();
- while (iterator.hasNext()) {
- CallbackListener listener = (CallbackListener) iterator.next();
- StringBuffer sb = new StringBuffer();
- for (int i = 0; i < count; i++) {
- sb.append(note);
- }
- listener.print(sb.toString());
- }
- }[/color] //主要實現方法,為什么不紅了???
- @Override
- public void run() {
- returnResult(note, count);
- }
- }
- package com.bjz;
- public class Test {
- public static void main(String[] args) {
- for (int i=0;i<10;i++) {
- Reciver reciver = new Reciver(i+"", 50);
- reciver.srtartCallbackThread();
- }
- }
- }
測試類

