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();
    
    		}
    
    	}
相关文章
相关标签/搜索