`

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:

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

相关推荐

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

    【标题】:“面试题解惑系列(十)——话说多线程” 【描述】:本篇文章主要探讨的是Java中的多线程概念及其在面试中常见的问题解析。 【标签】:“面试题解惑系列(十)——话说多线程” 【部分内容】:在Java中,多...

    JAVA面试题解惑系列合集

    .80 1.10 JAVA面试题解惑系列(十)——话说多线程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86 1.11 JAVA面试题解惑系列(十一)——这些运算符你是否还记得? . . ....

    JAVA面试题解惑系列.rar

    Java面试题解惑系列主要涵盖了Java编程语言的核心概念、进阶技术以及在面试中常见的问题。这个压缩包可能包含了两本书籍,一本是"JAVA面试题解惑系列.pdf",另一本是"臧圩人--JAVA面试题解惑系列合集.pdf"。这些资源...

    《经典JAVA面试题解惑系列合集(臧圩人)》

    《经典JAVA面试题解惑系列合集(臧圩人)》这本书很可能就是针对这些问题进行深入解析的一本指南。 首先,Java的基础知识是面试中的必考部分。这包括但不限于Java语法、数据类型、控制结构(如if语句、for循环、...

    Java面试题解惑系列

    来自网络,主要包括以下内容:1、类初始化的顺序;2、到底创建了几个String对象;3、变量(属性)的覆盖;4、final,finally,finalize;5.传了值还是传了引用;...适合将要笔试面试Java的朋友参考。

    JAVA面试题解惑系列.zip

    【标题】"JAVA面试题解惑系列.zip" 提供的内容主要聚焦于Java编程语言在面试中的常见问题及其解答。这通常涉及到Java的核心概念、高级特性、设计模式、并发编程、集合框架、IO/NIO流、异常处理、垃圾回收机制、多...

    2022java面试题、JVM面试题、多线程面试题、并发编程、Redis面试题、MySQL面试题、Java2022面试题

    2022java面试题、JVM面试题、多线程面试题、并发编程、Redis面试题、MySQL面试题、Java2022面试题、Netty面试题、Elasticsearch面试题、Tomcat面试题、Dubbo面试题、Kafka面试题、Linux面试题、2021面试题、java面试...

    JAVA面试题解惑系列

    JAVA面试题解惑系列 大家在去参加面试的时候,经常会遇到这样的考题:给你两个类的代码,它们之间是继承的 关系,每个类里只有构造器方法和一些变量,构造器里可能还有一段代码对变量值进行了某 种运算,另外还有...

    Java全能学习面试手册——互联网企业面试真题.zip

    Java全能学习面试手册——互联网企业面试真题.zip 01 java面试——北京-百度-Java中级.pdf 02 java面试——北京-京东-Java中级.pdf 03 java面试——广州-唯品会-Java大数据开发工程师.pdf 04 java面试——杭州-阿里...

    Java面试题详解,和一些基础知识的深入剖析,个人认为非常棒

    “JAVA面试题解惑系列(十)——话说多线程”是Java的一个强项。Java提供了丰富的工具和API来处理并发,如Thread类、ExecutorService和synchronized关键字,理解线程安全和死锁等问题是面试的重点。 “JAVA面试题...

    115个Java面试题和答案——终极列表

    Java面试题是每个Java开发者在求职过程中必须面对的挑战,涵盖范围广泛,从基础概念到高级特性和设计模式。这份终极列表包含115个Java面试题和答案,旨在帮助求职者全面准备,以期在面试中表现出色。以下是部分核心...

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    面试题包含了不同技术层面的面试问题,同时也能对一些没有面试开发经验的小白给予不可估量的包装, 让你的薪水绝对翻倍, 本人亲试有效.Java面试题84集、java面试专属及面试必问课程,所有的面试题有视屏讲解, 解答方案....

Global site tag (gtag.js) - Google Analytics