首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 笔记本电脑 | 北大青鸟 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Linux频道
中国IT教育
Google
首页 资讯动态 认证考试 新手入门 核心技术 高级技术 J2EE J2ME Java&XML 开源技术 其他技术 RSS订阅 论坛 专题
您现在的位置: 中国IT实验室 >> Java >> 高级技术 >> 多线程 >> 正文

java的多线程同步初探

      java在语言层级实现的多线程操作的一些原语,用起来比较方便,不像C、C++之类的要调用操作系统功能才能实现多线程。这里展示一个样例show一下java多线程就是这样简单,一点也不神秘,java让在课本上经常讲的多任务多线程处理很方便的走到初学者的代码中来。(但是也很方便创造deadlock,死锁很难发现,如果不了解就最好不要用,不是必要场合不要用)。至于书上云的一些线程状态以及各状态间的转换则都是一样的,java多了一个线程组,便于以group的方式管理大量线程,更多介绍还是去看API或者google,baidu吧,记录之供参考。如果你能够自己写一遍生产者消费者(也有称读者写者)就有了3、5成功力了吧,那样才能够考虑把它用到你的production代码中去。

      主要的就是一个Thread类,Thread类拥有一个Run()方法,还有一个Thread.start()来启动线程开工。实现多线程有两个方法:

1.将要并行执行的操作封装到一个继承自Thread的类中去

public class thread_ex extends  Thread{


    
public void init() {
        }


    
public void start() {
                       
//**will cll run() defualt.
        }


    
public void stop() {

    }


                      
public void run(){
                      
//**do some parallelization works.
                      }


}
    
            

2.延伸Runnable接口,满足一些继承了其他类又想多线程的(因为java不像C++一样支持多继承)


public class ThreadTest extends FatherClass   implements Runnable
    
public void init() ...{
        }


    
public void start() ...{
                       
//**will cll run() defualt.
        }


    
public void stop() ...{

    }


                      
public void run()...{
                      
//**do some parallelization works.
                      }


}    

 与线程有关的几个关键词是很重要的:synchronize  wait   notify     notifyAll

 如果不能很好的理解他们还是不要用的好。简单的介绍如下

 synchronize  修饰定义一个对象或者方法或者属性的访问必须串行化访问,顾名思义像在银行取钱要排队一样,那个业务员就是一个synchronize 对象。只有像我等无钱之辈才去排队,那些个VIP自然不用了。

 wait  和notify  notifyAll是一家的,他们是对象级的锁,余天生驽钝,这个偶翻了许多资料才理解,如果不能理解就看代码吧。多线程中的一个去访问共享资源发现有人使用,于是就在这个资源上面wait,占用者如果使用完了就notify()一下通知下一个等待者可以进来了,notifyAll()就是说在外面等的一起上吧!可是只能服务与一个人,于是大家抢着进去,力气大的自然占便宜。可是在java世界里面JVM说了算。

 有wait和notify的地方一定有synchronize,反过来不成立,wait 和notify不在Thread的势力范围

[1] [2] 下一页

【责编:Peng】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·Oracle外键及外键约束修改行为
 ·开源软件测试工具学习专题
 ·JSP Web开发 入门基础到高手进阶教程
 ·JavaFX—是Java桌面的新希望么?
 ·安全至上 .NET开发安全策略
 ·测试用例设计之道-测试用例学习专题
 ·面向Java开发人员的Scala指南
 ·Java设计模式之实例详解
 ·Oracle数据库11g 面向DBA和开发人员的重要新特性
 ·桌面应用软件编程 J2SE技术详解
 今日更新
 社区讨论
 博客论点
 频道精选
 Java 频道导航