多线程知识

一:单线程示例

package Thread;

import java.io.PrintWriter;

public class WithoutThread{
	static PrintWriter out = new PrintWriter(System.out,true);
	
	public static void main(String[] args) {
		NoThreadPseudoIO pseudo = new NoThreadPseudoIO();
		pseudo.run();
		showElapsedTime("Anthor task starts");
	}
	static long baseTime =System.currentTimeMillis();
	static void showElapsedTime(String message){
		long elapsedTime = System.currentTimeMillis()-baseTime;
		out.println(message + " at " +(elapsedTime/1000.0)+" seconds");
	}
}

class NoThreadPseudoIO{
	int data=-1;
	NoThreadPseudoIO(){
		WithoutThread.showElapsedTime("NoThreadPseudoIO created");
	}
	public void run(){
		WithoutThread.showElapsedTime("NoThreadPseudoIO starts");
		try{
			Thread.sleep(10000);
			data=99;
			WithoutThread.showElapsedTime("NoThreadPseudoIO finishes");
		}catch(InterruptedException e){
			
		}
	}
}

结果:

NoThreadPseudoIO created at 0.0 seconds
NoThreadPseudoIO starts at 0.0 seconds
NoThreadPseudoIO finishes at 10.0 seconds
Anthor task starts at 10.0 seconds


二:多线程的生成

    1:作为Thread子类

          这个子类定义自己的run()方法来覆盖Thread类的run()方法,这个run()方法局势任务运行的地方

          run()方法是java运行时为了启动线程而调用的第一个用户定义方法,然后new词句生成这个子类的实例,并调用线程的start方法执行run()方法。

代码:

package Thread;

import java.io.PrintWriter;
public class WithThread {
	static PrintWriter out = new PrintWriter(System.out,true);
	
	public static void main(String[] args) {
		ThreadPseudoIO pseudo = new ThreadPseudoIO();
		pseudo.start();
		showElapsedTime("Anthor task starts");
	}
	static long baseTime =System.currentTimeMillis();
	static void showElapsedTime(String message){
		long elapsedTime = System.currentTimeMillis()-baseTime;
		out.println(message + " at " +(elapsedTime/1000.0)+" seconds");
	}
}
class ThreadPseudoIO extends Thread{
	int data=-1;
	ThreadPseudoIO(){
		WithoutThread.showElapsedTime("ThreadPseudoIO created");
	}
	public void run(){
		WithoutThread.showElapsedTime("ThreadPseudoIO starts");
		try{
			Thread.sleep(10000);
			data=999;
			WithoutThread.showElapsedTime("ThreadPseudoIO finishes");
		}catch(InterruptedException e){
			
		}
	}
}

结果:

ThreadPseudoIO created at 0.0 seconds
ThreadPseudoIO starts at 0.0 seconds
Anthor task starts at 0.0 seconds
ThreadPseudoIO finishes at 10.0 seconds



    2:声明一个实现Runnable接口的类

         Runable接口需要一个方法来实现,即run()方法

         首先用new语句生成这个了类的实例

         然后用另一个new语句生成Thread实例

          最后调用这个线程实例的start()方法 ,于是开始运行run()方法中定义的任务。

代码:

import java.io.PrintWriter;

public class RunnableThread {


		static PrintWriter out = new PrintWriter(System.out,true);
		
		public static void main(String[] args) {
			RunnablePseudoIO pseudo = new RunnablePseudoIO();
			Thread thread = new Thread(pseudo);
			thread.start();
			showElapsedTime("Anthor task starts");
		}
		static long baseTime =System.currentTimeMillis();
		static void showElapsedTime(String message){
			long elapsedTime = System.currentTimeMillis()-baseTime;
			out.println(message + " at " +(elapsedTime/1000.0)+" seconds");
		}
}
	class RunnablePseudoIO implements Runnable{
		int data= -1;
		RunnablePseudoIO(){
			RunnableThread.showElapsedTime("RunnablePseudoIO creates");
			}
			
		public void run() {
			RunnableThread.showElapsedTime("RunnablePseudoIO starts");
			try {
				Thread.sleep(10000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			data=999;
			RunnableThread.showElapsedTime("RunnablePseudoIO finishes");
			
		}
		
	}


结果:

RunnablePseudoIO creates at 0.0 seconds
RunnablePseudoIO starts at 0.016 seconds
Anthor task starts at 0.016 seconds
RunnablePseudoIO finishes at 10.016 seconds

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值