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

原创 2013年03月15日 10:44:33

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多线程编程核心技术》学习笔记(三)——Lock、Timer、单例模式

Lock的使用使用ReentrantLock类在Java多线程中,可以使用synchronized关键字来实现线程之间同步互斥,但在JDK1.5中新增加了ReentrantLock类也能达到同样的效果...

《Java多线程编程核心技术》学习笔记(二)——多线程间通信

线程间通信等待/通知机制方法wait()的作用是使当前执行代码的线程进行等待,wait()方法是Object类的方法,该方法用来将当前线程置入”预执行队列”中,并且在wait()所在的代码行处停止执行...

《Java多线程编程核心技术》学习笔记(一)——Java的多线程

Java多线程进程:系统进行资源分配和调度的一个独立单位 线程:在进程中独立运行的子任务使用多线程:多线程是异步的线程启动顺序与start()执行顺序无关非线程安全:指多个线程对同一个对象中的同一个...

《Java 多线程编程核心技术》学习笔记及总结

第一章 Java 多线程技能 进程和线程的概念及多线程的优点 使用多线程 继承 Thread 类 实现 Runnable 接口 currentThread 方法 isAlive 方法 sleep 方...

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

线程的同步 由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题。Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问。 ...

JAVA多线程编程技术探讨.pdf

  • 2010年04月13日 10:59
  • 150KB
  • 下载

Posix多线程编程学习笔记

  • 2011年09月01日 09:42
  • 396KB
  • 下载

iOS多线程编程技术NSThread、Cocoa NSOperation、GCD三者使用详解

简介 iOS有三种多线程编程的技术,分别是: (一)NSThread (二)Cocoa NSOperation (三)GCD(全称:Grand Central Dispatch)...

Posix多线程编程学习笔记

  • 2012年08月17日 14:06
  • 627KB
  • 下载

Unix多线程编程技术

posix pthreads库提供了一系列的编写多线程程序的函数主要包括 1. 创建和中止线程函数 2. 同步线程和对程序资源加锁函数 3. 管理线程时序函数 一般地使用线程时序管理函数会复杂...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java学习笔记——多线程编程技术
举报原因:
原因补充:

(最多只允许输入30个字)