绝骑离尘

飞翔在一片年少轻狂的天空

Java学习笔记——多线程编程技术

java中多线程编程采用两个方式:①extends Thread ②implements Runnable


例子:写两个线程类,让他们同时运行



public class MyThread extends Thread {
	
	public void run() {
		for(int i = 0; i < 500; i++){
			System.out.println("这是MyThread线程===" + i);
		}
	}
	
	
}


调用线程;类时用start()方法!




public class YourThread implements Runnable{
	private Thread th;
	
	public YourThread(){
		this.th = new Thread(this);
	}
	
	public void start(){
		this.th.start();
	}
	
	public void run() {

		for(int i = 0; i < 500; i++){
			System.out.println("这是YourThread线程===" + i);
		}
	}
	
	
	
}

测试类:



import com.lovo.thread.MyThread;
import com.lovo.thread.YourThread;

public class TestMain {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
	
		MyThread mt = new MyThread();
		YourThread yt = new YourThread();
		yt.start();
		mt.start();
	}

}

效果:

这是YourThread线程===0
这是MyThread线程===0
这是YourThread线程===1
这是MyThread线程===1
这是YourThread线程===2
这是MyThread线程===2
这是YourThread线程===3
这是MyThread线程===3
这是YourThread线程===4
这是MyThread线程===4
这是YourThread线程===5
这是MyThread线程===5
这是YourThread线程===6
这是MyThread线程===6
这是YourThread线程===7
这是MyThread线程===7

……………………


如果这样写测试类:(设置线程优先级)




public class TestMain {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
	
		MyThread mt = new MyThread();
		YourThread yt = new YourThread();
		mt.setPriority(Thread.MAX_PRIORITY);//设置线程优先级,可以设置1到10,默认是5
		yt.start();
		mt.start();
		
	}

}

效果:

这是MyThread线程===0
这是YourThread线程===0
这是MyThread线程===1
这是YourThread线程===1
这是MyThread线程===2
这是YourThread线程===2
这是MyThread线程===3
这是YourThread线程===3
这是MyThread线程===4
这是YourThread线程===4
这是YourThread线程===5
这是MyThread线程===5
这是YourThread线程===6
这是MyThread线程===6

………………

这是YourThread线程===486
这是YourThread线程===487
这是YourThread线程===488
这是YourThread线程===489
这是YourThread线程===490
这是YourThread线程===491
这是YourThread线程===492
这是YourThread线程===493
这是YourThread线程===494
这是YourThread线程===495
这是YourThread线程===496
这是YourThread线程===497
这是YourThread线程===498
这是YourThread线程===499



对多线程的感悟:

为什么会这样?原因是因为设置优先级只代表获取CPU的几率大,而不是先执行完,这也是计算机硬件决定了的,其实事实上计算机根本不存在什么多线程,一切都是单线程,之所以有多线程的效果是因为我们把时间设置的小之又小,给人的感觉是同时运行,而事实上是因为我们感觉不到而已。反问一句:我们生活的世界又何尝不是这样的?



附:线程的状态


阅读更多
文章标签: Java
个人分类: java基础
上一篇Java学习笔记——自定义异常处理
下一篇Java学习笔记——JCF集合框架
想对作者说点什么? 我来说一句

java学习笔记5(java多线程

2011年08月30日 413KB 下载

java学习笔记4(java虚拟机)

2011年08月30日 379KB 下载

java学习笔记2(多线程

2011年08月30日 210KB 下载

没有更多推荐了,返回首页

关闭
关闭