您的位置:首页 > 编程语言 > Java开发

java之学习多线程(一)

2015-08-28 14:15 543 查看
在java中,想要实现多线程程序,就需要依靠一个线程的主体类,这个线程的主体类可以继承Thread类或实现Runnable 接口来完成定义,但是这两种方式有何不同,用哪个更好后面将会讲到。

(1)继承Thread类实现多线程(public Thread(Runnable target,String name)实例化线程对象,接收Runnable接口子类对象,同时设置线程名称)

public class line_realize extends Thread{  //定义线程主体类
	private String title;                <span style="font-family: Arial, Helvetica, sans-serif;">//定义所需要的属性</span>
	public line_realize(String title){       
		this.title = title;
	}
	@Override
	public void run(){                            //线程的主方法
		for(int x = 0;x < 5;x++)
		{
			System.out.println(this.title + "run,x="+x);
		}
	}
}
<pre name="code" class="java">    (1.1)错误的线程操作



<pre name="code" class="java">public class line_realize_Error {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub
		line_realize L1 = new line_realize("one");           //创建线程对象
		line_realize L2 = new line_realize("two");
		line_realize L3 = new line_realize("theer");
		L1.run();                                            //调用覆写的run()方法
		L2.run();
		L3.run();
	}

}



(1.1.1)错误的运行结果


可以从运行结果看出,所谓的线程是按照我们的书写顺序完成的,所以以上的操作并没有真正的启动多线程。因为启动多线程有一个特点就是线程彼此之间是交替运行的。想要在程序中真正的启动多线程必须依靠Thread类的方法public
void start(),表示真正的启动多线程,调用此方法后将间接调用run()方法。

(1.2)正确的线程操作方法

public class line_realize_true {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub
		line_realize L1 = new line_realize("one");                      //创建线程对象
		line_realize L2 = new line_realize("two"); 
		line_realize L3 = new line_realize("three");
		L1.start();
		L2.start();
		L3.start();                                                     //启动线程
	}

}
结果是交替的:tworun,x=0
onerun,x=0
threerun,x=0
onerun,x=1
tworun,x=1
onerun,x=2
threerun,x=1
onerun,x=3
tworun,x=2
onerun,x=4
threerun,x=2
threerun,x=3
tworun,x=3
threerun,x=4
tworun,x=4
(2)实现Runnabel接口

public class line_realize2 implements Runnable{
	private String title;                     <span style="font-family: Arial, Helvetica, sans-serif;">//定义所需要的属性</span>

	public line_realize2(String title){
		this.title = title;
	}
	@Override
	public void run()                        //线程主方法
	{
		for(int x = 0;x < 5;x ++){
			System.out.println(this.title+" run,x="+x);
		}
	}
}
实现方法:
public class line_realize_true {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub
		line_realize2 L1 = new line_realize2("one");                      //创建线程对象
		line_realize2 L2 = new line_realize2("two"); 
		line_realize2 L3 = new line_realize2("three");
		new Thread(L1).start();
		new Thread(L2).start();
		new Thread(L3).start();
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: