Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Java SE 综合讨论区 » Java与OOP初步  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 【求助】请教几个关于线程的问题
Cappuccino





发贴: 49
积分: 4
于 2007-05-31 15:27 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
刚开始学java没多久,想请教一下各位几个关于多线程的问题。谢谢了。
1. 线程类里面的run方法是void的类型,如果有的时候需要返回值的话有什么好办法呢?现在只知道两个办法一个是将thread当作内部类,然后访问外部类的资源;还有一个是将调用的类当作参数构建thread,让thread来访问调用类里面的资源。
2. 关于线程池里面的概念,知道jdk里面有一个cocurrent的包,但是貌似在网上讨论的不多,如果各位有什么关于这个的好的文章劳驾推荐一下,万分感谢。
3. 我自己写了一个ThreadPool类进行多线程的操作,用来生成workerthread。但是运行的时候经常会变成像死锁一样,不知道原因是什么。是因为没有强制停止workerthread吗?threadpool代码如下


package test;
import java.util.LinkedList;

public class ThreadPool
{
  private final int nThreads;

  private final PoolWorker[] threads;

  private final LinkedList<Runnable> queue;

  public ThreadPool(int nThreads)
  {
    this.nThreads = nThreads;
    queue = new LinkedList<Runnable>();
    threads = new PoolWorker[this.nThreads];

    for (int i = 0; i < this.nThreads; i++)
    {
      threads[i] = new PoolWorker();
      threads[i].start();
    }
  }

  public void execute(Runnable r)
  {
    synchronized (queue)
    {
      queue.addLast(r);
      queue.notifyAll();
    }
  }

  private class PoolWorker extends Thread
  {
    public void run()
    {
      Runnable r;

//      while (true)
//      {
        synchronized (queue)
        {
          while (queue.isEmpty())
          {
            try
            {
              queue.wait();
            } catch (InterruptedException ignored)
            {
            }
          }

          r = (Runnable) queue.removeFirst();
        }

        try
        {
          r.run();
        } catch (RuntimeException e)
        {
        }
//      }
    }
  }
}





学java的朋友,请一起来投票让sun推出中文jdk文档!!!

话题树型展开
人气 标题 作者 字数 发贴时间
8147 【求助】请教几个关于线程的问题 Cappuccino 1411 2007-05-31 15:27
6298 Re:【求助】请教几个关于线程的问题 cxp108 356 2007-06-04 12:25
6965 Re:【求助】请教几个关于线程的问题 Cappuccino 425 2007-06-07 00:45

flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923