Java多线程基础之线程特性

核心知识:

① 使用多线程技术时,代码的运行结果与代码执行的顺序或调用顺序是无关的

public class MyThread  extends Thread{
	
	@Override
	public void run() {
		
		super.run();
		System.out.println("MyThread");
		
		
	}
public class Test {
	public static void main(String[] args) {
	
		MyThread myThread = new MyThread();
		myThread.start();
		System.out.println("运行结束");
	}
	

按照代码的执行顺序来看,应该是执行run方法后先输出MyThread,然结果并不是。

②线程具有随机性

public class MyThread extends Thread {

	@Override
	public void run() {
		try {
			for (int i = 0; i < 10; i++) {
				int time = (int) (Math.random() * 1000);
				Thread.sleep(time);
				System.out.println("run=" + Thread.currentThread().getName());
			}
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}
public class Run {
	
	public static void main(String[] args) {

		try {
			
			
			MyThread myThread = new MyThread();
			myThread.start();

			for (int i = 0; i < 10; i++) {
				int time = (int) (Math.random() * 1000);
				Thread.sleep(time);
				System.out.println("main=" + Thread.currentThread().getName());
			}
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

③线程启动的顺序与start()执行无关

public class MyThread extends Thread {
	
	private int i ;
	
	
	 public MyThread(int i ) {
		 super();
		 this.i = i;
	}

	@Override
	public void run() {
		System.out.println(i);
	}

}
public class Test {
	public static void main(String[] args) {
		MyThread myThread1 = new MyThread(1);
		MyThread myThread2 = new MyThread(2);
		MyThread myThread3 = new MyThread(3);
		MyThread myThread4 = new MyThread(4);
		MyThread myThread5 = new MyThread(5);
		MyThread myThread6 = new MyThread(6);
		
		myThread1.start();
		myThread2.start();
		myThread3.start();
		myThread4.start();
		myThread5.start();
		myThread6.start();
		

	}

}

猜你喜欢

转载自blog.csdn.net/weixin_42245930/article/details/85010517