黑马程序员技术交流社区

标题: 多线程问题 [打印本页]

作者: H-Deka    时间: 2014-3-27 10:18
标题: 多线程问题
多线程买票的例子中,下面这样写怎么不行呢,Thread本身不是已经实现了Runnable接口吗?



作者: osully    时间: 2014-3-27 10:35
大哥! 主函数里面的代码三句写的有问题

这样写
Ticket t = new Ticket();
t.start();

作者: H-Deka    时间: 2014-3-27 10:38
osully 发表于 2014-3-27 10:35
大哥! 主函数里面的代码三句写的有问题

这样写

Thread实现了Runnable接口,Ticket继承了Thread, 那么Ticket的实例不可以作为参数传给Thread()吗
作者: osully    时间: 2014-3-27 10:48
可以,不过你建立的对象是错ThreadTest

如果要操作同一个资源 ,只要建立一个对象
Ticket t = new Ticket();
new Thread(t).start();
new Thread(t).start();
作者: ithmC4    时间: 2014-3-27 10:50
你搞混了多线程创建的两种方式、
1.继承Thread,做一个子类。
  1. class ThreadTest extends Thread
  2. {
  3.         //复写run()方法
  4. }
复制代码

调用多线程时这样写
  1.                 ThreadTest threadTest = new ThreadTest;
  2.                 threadTest.start();
复制代码


2.实现Runnable接口
  1. class ThreadTest implements Runnable
  2. {
  3.         //复写run()方法
  4. }
复制代码

调用多线程时这样写
  1.                 ThreadTest threadTest = new ThreadTest;
  2.                 new Thread(threadTest).start();
复制代码



作者: 执笔梦    时间: 2014-3-27 22:38
感觉有点乱.
首先Thread实现Runnable并复写了run()方法。run()方法中是封装线程体的,但启动线程的方法在Thread中:start()方法;
创建线程有两种方法。
1.实现Runnable接口。复写run()方法。将实现Runnable接口的类的对象传入一个Thread实例中,并调用Thread中的start()方法,启动线程。

2.直接继承Thread类,复写run()方法,调用start()方法,启动线程。
个人见解,不知对不对:L




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2