A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© H-Deka 中级黑马   /  2014-3-27 10:18  /  732 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多线程买票的例子中,下面这样写怎么不行呢,Thread本身不是已经实现了Runnable接口吗?


评分

参与人数 1技术分 +1 收起 理由
黑妞~ + 1

查看全部评分

5 个回复

倒序浏览
大哥! 主函数里面的代码三句写的有问题

这样写
Ticket t = new Ticket();
t.start();
回复 使用道具 举报
osully 发表于 2014-3-27 10:35
大哥! 主函数里面的代码三句写的有问题

这样写

Thread实现了Runnable接口,Ticket继承了Thread, 那么Ticket的实例不可以作为参数传给Thread()吗
回复 使用道具 举报
可以,不过你建立的对象是错ThreadTest

如果要操作同一个资源 ,只要建立一个对象
Ticket t = new Ticket();
new Thread(t).start();
new Thread(t).start();

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
你搞混了多线程创建的两种方式、
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();
复制代码


评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
感觉有点乱.
首先Thread实现Runnable并复写了run()方法。run()方法中是封装线程体的,但启动线程的方法在Thread中:start()方法;
创建线程有两种方法。
1.实现Runnable接口。复写run()方法。将实现Runnable接口的类的对象传入一个Thread实例中,并调用Thread中的start()方法,启动线程。

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

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马