码迷,mamicode.com
首页 > 编程语言 > 详细

Java的多线程

时间:2017-05-07 18:32:15      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:9.png   bsp   void   注意   返回   显示   target   调用   共享   

 

    Java使用Thread代表线程,所有的线程对象都必须是Thread类或其子类的实例。每个线程的作用就是执行一段程序流(完成一定的任务)。

Java使用线程执行体来代表这段程序流。

 1. 继承Thread类创建线程类

package org.apache;

public class ThreadDemo1 extends Thread {
	private int i;
	/*
	 * 重写run方法,也就是线程执行体
	 * 当线程类继承Thread类时,直接使用this即可取得当前线程
	 * 直接调用getName()方法即可返回当前线程的名字
	 */
	public void run(){
		for ( ; i<100;i++){
			System.out.println(getName() + " " + i);
		}
	}
	
	public static void main(String[] args) 
	{
		for (int i=0;i<100;i++){
			System.out.println(Thread.currentThread().getName() 
					+ " "+i);
			if(i==20){
				//创建并启动第一个线程
				new ThreadDemo1().start();
				//创建并启动第二个线程
				new ThreadDemo1().start();
			}
		}
	}
}

  执行结果:

技术分享

注意:实际上该程序有三个线程,main()方法是主线程,显示的创建了两个子线程。

   Thread-0和Thread-1 i的值是不连续的,所以Thread-0和Thread-1不能共享Thread类的实例变量。

2. 实现Runnable接口创建线程类

package org.apache;

public class ThreadDemo2 implements Runnable {
	private int i;
	//当实现Runnable接口时必须用Thread.currentThread().getName()获取当前线程
	public void run() {
		for ( ; i<100;i++){
			System.out.println(Thread.currentThread().getName() + " " + i);
		}
	}

	public static void main(String[] args) {
		for (int i=0;i<100;i++){
			System.out.println(Thread.currentThread().getName() + " "+i);
			if (i==20){
				ThreadDemo2 td = new ThreadDemo2();
				//通过new Thread(target,name)方法创建线程
				new Thread(td,"线程1").start();
				new Thread(td,"线程2").start();
			}
		}

	}
}

  结果:

技术分享

i的值是连续的,共享同一个线程类的实例变量(其实是线程的target类)

Java的多线程

标签:9.png   bsp   void   注意   返回   显示   target   调用   共享   

原文地址:http://www.cnblogs.com/zydev/p/6821402.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!