java中开辟新线程的两种方法以及区别

来源:互联网 发布:淘宝二手市场网 编辑:程序博客网 时间:2024/06/14 20:36

在java开发中经常会遇到线程问题,笔者之前也是技术小白,对线程这一直没有多大理解,这段时间找工作时遇到公司面试问这块的问题较多,故又搜索资料恶补了下,发现线程并不是那么难,只能说笔者技术太菜了。

1、什么叫线程?

线程是操作系统能够进行运算调度的最小单位,是进程的实际运作单位。进程就是通熟意义讲的任务。例如:你执行一个旅行的任务,选择什么样的交通方式就是一个线程。       程序员可以利用线程进行多处理编程,比如你在旅行途中同时可以做其他的事情,互不干涉同步进行。而且多线程可以节省时间。比如:你一个线程完成一个任务需要100毫秒时间,那么你10个进程只需10毫秒。

不同的进程使用不同的内存空间,不同的线程共享同一内存空间。注:不同的线程都有自己不同的栈内存空间存储

2、创建线程的方法以及有何区别?

java语言通过Thread实现多线程编程,创建线程的方法类似创建普通对象,线程就是创建Thread类对象或者子类实例对象。创建线程以下有两种方法:

1)扩展一个新的线程类,重载run()方法

2)实现runnable接口,重载run()方法

在java中仅支持单继承,也就是说当定义一个新的类后只能扩展一个外部类,也就是说定义的这个类是扩展的Thread类的话,就不能再扩展,就不能再实现其他复杂的功能了,而实现runnable接口能解决这个问题,实现runnable接口创建的线程可以处理同一资源,可以实现资源共享。

3、示例:

实现runnable接口

public class ThreadRunnable{
public static void main(String args[]){

MyThread aa=new MyThread();
Thread t1=new Thread(aa,"window1");
Thread t2=new Thread(aa,"window2");
Thread t3=new Thread(aa,"window3");
t1.start();
t2.start();
t3.start();
}
static class MyThread implements Runnable{

private int ticket=100;
public void run(){
while(ticket>0){
System.out.println(ticket+"被"+Thread.currentThread().getName()+"买了");
ticket--;
}
}
}
}