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



附:线程的状态


数据库笔记(自己学习过程中整理)

编程语言是实现对内存的操作比较方便,对硬盘数据的操作数据库比较方便   一、数据库如何存储数据的 字段,记录,表,约束(主键,外键,唯一键,非空,check,default)   二、如何操作数据 i...
  • Caster_Saber
  • Caster_Saber
  • 2015年05月17日 16:20
  • 1649

HCNA华为认证网络工程师培训(笔记

ARP协议.flv
  • yxwmzouzou
  • yxwmzouzou
  • 2014年10月07日 17:50
  • 2068

《Java多线程编程核心技术》推荐

写这篇博客主要是给猿友们推荐一本书《Java多线程编程核心技术》。之所以要推荐它,主要因为这本书写得十分通俗易懂,以实例贯穿整本书,使得原本抽象的概念,理解起来不再抽象。只要你有一点点Java基础,你...
  • u013142781
  • u013142781
  • 2016年03月04日 21:35
  • 18943

《java多线程编程技术核心》读书笔记9

package multiThread; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.Reent...
  • zcorange1
  • zcorange1
  • 2017年05月18日 12:22
  • 47

《java多线程编程技术核心》---读书笔记1

synchronized同步方法 package multiThread; /* *学 高洪岩 《java多线程编程技术核心》 * *两个线程访问同一对象中的同步方法 是安全的 * ...
  • zcorange1
  • zcorange1
  • 2017年03月29日 06:37
  • 94

《java多线程编程技术核心》---读书笔记2

静态同步synchronized方法和synchronized(class)代码块 class Service { synchronized public static void printA() ...
  • zcorange1
  • zcorange1
  • 2017年03月29日 10:29
  • 80

《Java多线程编程核心技术》学习笔记(三)——Lock、Timer、单例模式

Lock的使用使用ReentrantLock类在Java多线程中,可以使用synchronized关键字来实现线程之间同步互斥,但在JDK1.5中新增加了ReentrantLock类也能达到同样的效果...
  • benhuo931115
  • benhuo931115
  • 2016年12月19日 10:04
  • 712

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

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

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

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

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

第一章 Java 多线程技能 进程和线程的概念及多线程的优点 使用多线程 继承 Thread 类 实现 Runnable 接口 currentThread 方法 isAlive 方法 sleep 方...
  • tzs_1041218129
  • tzs_1041218129
  • 2017年06月05日 22:40
  • 815
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java学习笔记——多线程编程技术
举报原因:
原因补充:

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