Java線程切換

  1. 接受線程ide

    /**
    	 * description:
    	 *
    	 * @author: dawn.he QQ:       905845006
    	 * @email: dawn.he@cloudwise.com
    	 * @email: 905845006@qq.com
    	 * @date: 2019/12/5    12:55 AM
    	 */
    	public class DataHandler {
    
    		// 數據副本
    		private String mData;
    
    		public DataHandler() {
    			initSwithThread();
    		}
    
    		/**
    		 * 發送數據,供外部調用
    		 * @param data
    		 */
    		public void sendData(String data) {
    			// 拷貝數據
    			mData = data;
    		}
    
    		private void initSwithThread() {
    			new Thread(new Runnable() {
    
    				@Override
    				public void run() {
    					while(true) {
    						if(null != mData && mData.length() > 0) {
    							System.out.println("process data, run in thread : "
    									+ Thread.currentThread().getName() + ", data = " + mData);
    							// 數據發送後,清除數據副本mData
    							mData = null;
    						}
    						// 爲了可以清晰看清結果這裏讓thread休眠1s
    						try {
    							Thread.sleep(1000);
    						} catch (InterruptedException e) {
    							e.printStackTrace();
    						}
    					}
    				}
    			}, "ThreadB").start();
    		}
    	}
  2. 發送線程線程

    /**
    	 * description:
    	 *
    	 * @author: dawn.he QQ:       905845006
    	 * @email: dawn.he@cloudwise.com
    	 * @email: 905845006@qq.com
    	 * @date: 2019/12/5    12:55 AM
    	 */
    	public class ThreadTest {
    
    		public static DataHandler mHandler;
    
    		public static void main(String[] args) {
    
    			mHandler = new DataHandler();
    
    			Thread threadA = new Thread(new Runnable() {
    
    				@Override
    				public void run() {
    					// 線程A中發送數據
    					String data = "hello code 9527";
    					System.out.println("send data, run in thread : "
    							+ Thread.currentThread().getName() + ", data = " + data);
    					// 經過DataHandler將數據拷貝到線程B中處理
    					mHandler.sendData(data);
    
    				}
    			}, "threadA");
    			threadA.start();
    
    		}
    
    	}
相關文章
相關標籤/搜索