`

JAVA面试题解惑系列(十)——话说多线程

阅读更多
removed.

请到博文下载PDF文件:http://zangweiren.iteye.com/blog/241218
56
11
分享到:
评论
45 楼 guiqing85 2010-06-19  
怎麼只有removed了?
44 楼 yaodaqing 2009-07-06  
引用的包名写错了
正确:java.util.concurrent.locks.Lock;
util后面多写了S
43 楼 xuey210 2009-06-18  
我有个疑问:

线程sleep()方法是让它沉睡(停止运行),那目前他是那六种状态的哪种?

wait()方法调用后进入了WAITING状态,

停止运行和WAITING状态是一样的吗?

sleep()方法醒来后变成了RUNABLE状态 那wait()方法醒来后进入了什么状态呢?

能帮我解释清楚么?谢谢!!
42 楼 臧圩人 2008-12-19  
langyu 写道

小问题那个线程sleep了10小时,而不是注释上写的10分钟

已修正。
41 楼 langyu 2008-12-18  
小问题
那个线程sleep了10小时,而不是注释上写的10分钟
40 楼 overkill 2008-09-18  
总结得不错,好多基础知识需要好好复习了
39 楼 kingxip 2008-09-06  
import java.io.*;
public class ByteArrayTest 
{
	public static void transform(InputStream ips,OutputStream ops)
	{
		int ch=0;
		try
		{
			while((ch=ips.read())!=-1)
			{
				int upperCh=Character.toUpperCase((char)ch);
				ops.write(upperCh);
			}

		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) 
	{
		String str="kingxip";
		byte[] src=str.getBytes();
		ByteArrayInputStream baInput=new ByteArrayInputStream(src);
		ByteArrayOutputStream baOut=new ByteArrayOutputStream();
		transform(baInput,baOut);
		byte[] result=baOut.toByteArray();
		System.out.println(new String(result));
		
	}	
}


这个实现大小写转换 为什么这么麻烦 在转换函数中要吧io流作为参数?
38 楼 niwtsew 2008-09-05  
不好意思,关于synchronized: 你说线程在执行同步方法时是具有排它性的。当任意一个线程进入到一个对象的任意一个同步方法时,这个对象的所有同步方法都被锁定了,在此期间,其他任何线程都不能访问这个对象的任意一个同步方法,直到这个线程执行完它所调用的同步方法并从中退出,从而导致它释放了该对象的同步锁之后。

我觉得不准确.确切来说, 只有当synchronized 锁定的monitor是同一个时,方法才会被同步.
举个例子,一个非static的synchronized,锁的时this,耳static的synchronized锁的是Class这个锁, 这两个方法在多线程中因为synchronized锁的monitor不一样,是可以被同时调用的...
37 楼 niwtsew 2008-09-05  
博主请过目, 关于Object.wait()释放的锁的范围,你说:
如果线程拥有某个或某些对象的同步锁,那么在调用了wait()后,这个线程就会释放它持有的所有同步资源,而不限于这个被调用了wait()方法的对象。

本人认为是错误的,这个方法只会释放Object自己的锁,不会释放其他锁,见jdk api doc:
The current thread must own this object's monitor. The thread releases ownership of this monitor and waits until another thread notifies threads waiting on this object's monitor to wake up either through a call to the notify method or the notifyAll method

为了说明问题,我写了个小例子,请过目:
public class ThreadTest extends Thread

{
    private Object monitor1 = new Object();
    private Object monitor2 = new Object();
   
    public void run()
    {
        while(true)
        {
            try{
//                sleep(20*1000);
                synchronized(monitor1)
                {
                    System.out.println("method run() got the lock of monitor1");
                    synchronized(monitor2)
                    {
                        monitor2.wait();
                    }
                }
            }
            catch(Exception e){
                e.printStackTrace();
            }
        }
    }
   
    public void tryToGetMonitor1()
    {
        try{
            System.out.println("sleep 20 sec");
            sleep(20*1000);
            System.out.println("wake up");
        }
        catch(Exception e){
            e.printStackTrace();
        }
        synchronized(monitor1)
        {
            System.out.println("method tryToGetMonitor1() has got the lock of monitor1");
        }
    }
   
    public static void main(String[] args){
        ThreadTest test = new ThreadTest();
        test.start();
        test.tryToGetMonitor1();
    }   
}





运行结果是tryToGetMonitor1()方法永远也不会得到monitor1这个lock
36 楼 臧圩人 2008-08-21  
回复ganlisxn、ganlisxn、yu_xian81:

感谢几位的支持,请大家保持关注
35 楼 臧圩人 2008-08-21  
回复yuankai:
yuankai 写道
一直都在关注LZ的博客,每次来都有新的收获,谢了!
希望LZ能讲下java security 这块的东西,这块在实际项目中很重要,也很实用。希望有很好的实例和UML图讲解,这样对新手更容易理解。

非常感谢你的支持和建议
34 楼 yu_xian81 2008-08-21  
新人,顶之!虽然不太深入,但都很详细,好!
33 楼 jdlsfl 2008-08-17  
多几个例子就更加好了
32 楼 ganlisxn 2008-08-16  
讲解得很仔细,哈哈,多谢版主,希望更多更深入的讲解--多线程,期待你的发表
31 楼 yuankai 2008-08-14  
一直都在关注LZ的博客,每次来都有新的收获,谢了!
希望LZ能讲下java security 这块的东西,这块在实际项目中很重要,也很实用。希望有很好的实例和UML图讲解,这样对新手更容易理解。
30 楼 臧圩人 2008-08-13  
kruce 写道
对多线程的几个好的话题都没涉及


能具体说说你认为有哪个好的话题没有涉及到吗?
29 楼 臧圩人 2008-08-13  
feitianqiwu 写道
現在項目中還只涉及到了同步,對線程池的了解比較少,多謝樓主的介紹:)


谢谢,请多多支持,多多关注
28 楼 臧圩人 2008-08-13  
evil850209 写道
希望能有IO和集合(Collection)的介绍,初学者对这些很模糊。


spaceflysky@163.com  写道
太好了,太好了!!!
IO 这个话题不知道楼主在以后的讲解中有没有安排,非常期待!!!


IO和集合这些部分后续文章都会写到的。请多多关注,欢迎提出宝贵意见
27 楼 臧圩人 2008-08-13  
回复ffyahoo:

引用
这个同步应该是锁对象,而不是代码块或者方法吧?


不知你指的是哪个地方呢?能说得具体些吗?
26 楼 臧圩人 2008-08-13  
回复Azi、evil850209、backbase、spkto、ReaiJava:

谢谢你们的支持和建议,请多多关注

相关推荐

Global site tag (gtag.js) - Google Analytics