黑马程序员技术交流社区
标题:
多线程
[打印本页]
作者:
张海洋
时间:
2013-3-24 22:09
标题:
多线程
本帖最后由 张海洋 于 2013-3-24 22:41 编辑
多线程是怎么实现的,为什么要实现多线程?
作者:
炉海佳
时间:
2013-3-24 22:28
实现多线程有两种方法,继承Thread类复写run方法,调用start方法开启线程。或者实现Runnable接口,复写run方法,调用start方法开启线程
继承Thread类:
public class MyThread extends Thread //继承Thread类
{
public void run() //复写run方法
{
System.out.println("MyThread.run()");
}
}
public static void main(String[] args)
{
MyThread myThread1 = new MyThread();
MyThread myThread2 = new MyThread();
myThread1.start();//start开启线程
myThread2.start();
}
实现Runnable接口
public class MyThread implements Runnable
{
public void run() //复写run方法
{
System.out.println("MyThread.run()");
}
}
public static void main(String[] args)
{
MyThread myThread = new MyThread();
Thread thread = new Thread(myThread);
thread.start();//start开启线程
}
多线程好处当然是高效
作者:
freeboyhrk
时间:
2013-3-24 22:34
线程,就是进程中的一个独立控制单元,线程控制着进程的执行。实现多线程,可以让多个方法或程序同时运行。
创建线程,有两种方式。
1.继承Thread类 1定义继承Thread的类,2复写Thread中的run方法,3调用线程的start方法。
2实现Runable接口 1定义实现Runable接口,2覆盖Runable接口中的run方法,3通过Thread类建立线程对象,4将Runable接口的子类对象作为实参传给Thread类的构造函数,5调用Thread类的start方法开启线程,6并调用Runable接口子类的run方法。
作者:
壁虎
时间:
2013-3-24 22:48
在java中实现多线程有两种方式
1.继承Thread类
2.实现Runnable接口
案例1(继承Thread实现多线程)
class ThreadDemo extends Thread{
public void run(){
System.out.println("我是"+getName());
}
}
复制代码
public class Demo{
public static void main(String[] args){
ThreadDemo td=new ThreadDemo();
td.start();
}
}
复制代码
案例2(通过实现Runnable接口来实现多线程)
class ThreadDemo implements Runnable{
public void run(){
System.out.println("我是:"+getName());
}
}
复制代码
public class Demo{
public static void main(String[] args){
new Thread(new ThreadDemo()).start();
}
}
复制代码
上面这两种方式都可以实现多线程,但推荐使用第二种实现接口的方式,因为java是不支持多继承的,如果用继承Thread的方式实现了多线程,然而此时此类需要再继承一个来,来增加程序的扩展性,显然如果此类已经继承了Thread就不可能还能去继承别的类。而如果你是实现Runnable接口的方式来实现多线程的。却可以。
问:使用多线程的好处?
答:使用多线程最大的好处就是,可以同时处理多个任务,然后就是可以提高程序的效率。
作者:
王薪婷
时间:
2013-3-24 23:19
嘿嘿我看了楼上的,所以我就不再说怎么实现多线程了呢,至于为什么要实现多线程的话,我觉得这是和我们日常生活搭边的吧,就像我们去买火车票的时候要是只有一个窗口在卖票,那效率就低了。。。所以要多开几个窗口进行同样的操作卖票。还有就是日常生活的存钱也是的
作者:
_王涛
时间:
2013-3-24 23:33
实现多线程有三种:
(1)继承Thread类,重写run函数
创建:
class xx extends Thread{
public void run(){
Thread.sleep(1000) //线程休眠1000毫秒,sleep使线程进入Block状态,并释放资源
}}
开启线程:
对象.start() //启动线程,run函数运行
(2)实现Runnable接口,重写run函数
开启线程:
Thread t = new Thread(对象) //创建线程对象
t.start()
(3)实现Callable接口,重写call函数
Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务。
Callable和Runnable有几点不同:
①Callable规定的方法是call(),而Runnable规定的方法是run().
②Callable的任务执行后可返回值,而Runnable的任务是不能返回值的
③call()方法可抛出异常,而run()方法是不能抛出异常的。
④运行Callable任务可拿到一个Future对象,Future表示异步计算的结果。它提供了检查计算是否完成的方法,以等
待计算的完成,并检索计算的结果.通过Future对象可了解任务执行情况,可取消任务的执行,还可获取任务执行的结果
为什么要实现多线程呢?
多线程可以把任务分块执行,分块后可以同时进行而不用等待。 这样效率更高
例如下载文件,通过多线程就可以实现多文件下载
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2