| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 841 人关注过本帖
标题:有关线程的问题,大神进来看一下!
取消只看楼主 加入收藏
爱吃西瓜的鱼
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-5-8
结帖率:0
收藏
已结贴  问题点数:1 回复次数:2 
有关线程的问题,大神进来看一下!
看下以下两个代码,为什么我一个代码会出现异常java.lang.IllegalThreadStateException. 而第二种方法就产生了异常了呢? 同样是通过Thread中的 public Thread(Runnable target)构造方法创建了对象.   疑惑啊....
 ------------------------------------------------------------------------------------------------------------------------------------------------  -----------------------------------------------------------------------------------------------------------------------------------------------
第一种:
class MyThread1 implements Runnable{
    int tickets=5;
    private String name;
    public MyThread1(String name){
        this.name=name;
    }
    public void run(){
        for(int i=0;i<5;i++){
            System.out.println("余票还有:"+(--tickets));
        }
    }
}
public class ThreadDemo2 {
    public static void main(String args[]){
        MyThread1 mt1= new MyThread1("线程1");
        Thread th1=new Thread(mt1);
        th1.start();
        th1.start();   
    }
}
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
第二种:class MyThread1 implements Runnable{
    int tickets=5;
    private String name;
    public MyThread1(String name){
        this.name=name;
    }
    public void run(){
        for(int i=0;i<5;i++){
            System.out.println("余票还有:"+(--tickets));
        }
    }
}
public class ThreadDemo2 {
    public static void main(String args[]){
        MyThread1 mt1= new MyThread1("线程1");
        new Thread(mt1).start();
        new Thread(mt1).start();   
    }
}
搜索更多相关主题的帖子: 异常 public target 
2013-05-08 20:04
爱吃西瓜的鱼
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-5-8
收藏
得分:0 
打错了,应该是:看下以下两个代码,为什么我一个代码会出现异常java.lang.IllegalThreadStateException. 而第二种方法就没产生异常呢?
2013-05-08 20:05
爱吃西瓜的鱼
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-5-8
收藏
得分:0 
回复 2楼 爱吃西瓜的鱼
那如果我在原有线程1的基础上再创建一个线程2,为什么线程1,线程2,这两个不能达到共享资源tickets这个变量?而是这两个线程独自卖了各自的五张票?不是说Runnable接口可以实现资源共享吗?
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
class MyThread1 implements Runnable{
    int tickets=5;
    private String name;
    public MyThread1(String name){
        this.name=name;
    }
    public void run(){
        for(int i=0;i<5;i++){
            System.out.println(Thread.currentThread().getName()+"余票还有:"+(--tickets));
        }
    }
}
public class ThreadDemo2 {
    public static void main(String args[]){
        MyThread1 mt1= new MyThread1("线程1");
        MyThread1 mt2= new MyThread1("线程2");
        new Thread(mt1).start();
        new Thread(mt2).start();   
    }
}
--------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------
运行结果:
Thread-0余票还有:4
Thread-1余票还有:4
Thread-0余票还有:3
Thread-1余票还有:3
Thread-0余票还有:2
Thread-1余票还有:2
Thread-0余票还有:1
Thread-1余票还有:1
Thread-0余票还有:0
Thread-1余票还有:0

2013-05-10 10:58
快速回复:有关线程的问题,大神进来看一下!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023391 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved