Java多线程学习
平凡de世界
这个作者很懒,什么都没留下…
展开
-
java多线程的创建
线程创建的两种方法(callable不常用,需要了解的可以百度啦) Java提供了线程类Thread来创建多线程的程序。其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象。每个Thread对象描述了一个单独的线程。要产生一个线程,有两种方法: ◆需要从Java.lang.Thread类派生一个新的线程类,重载它的run()方法;原创 2016-05-14 10:11:37 · 2465 阅读 · 0 评论 -
线程停止
在java中有以下三种方法可以终止正在运行的线程: 1)使用退出标志,是线程正常退出,即run方法完成后线程终止 2)使用stop()方法强行终止线程(不推荐使用) 3)使用interrupt()方法中断线程使用interrupt方法终止线程 : 主要方法:1.interrupt():调用interrupt()方法仅仅在当前线程中打了一个停止的标记,并不是真的停止线程原创 2016-05-14 15:03:44 · 339 阅读 · 0 评论 -
java线程状态转换及常用方法
java多线程常用方法 一.线程状态图 二.常用方法1.currentThread():返回代码段正在被哪个线程调用的信息2.sleep(long millis): 在指定的毫秒数内让当前正在执行的线程休眠(暂停执行)3.join():指等待t线程终止 join是Thread类的一个方法,启动线程后直接调用,即join()的作用是:“等待该线程终止”,这里需要理解的就是该线程是指的主线程等待子原创 2016-05-14 14:15:51 · 681 阅读 · 0 评论 -
Synchronized关键字
线程安全问题: java类中的变量分为类变量(静态变量),实例变量(非静态变量),局部变量(方法类变量) 非线程安全问题存在于实例变量中一. synchronized同步方法 在Java中,每一个对象都拥有一个锁标记(monitor),也称为监视器,多线程同时访问某个对象时,线程只有获取了该对象的锁才能访问。 在Java中,可以使用synchronized关键字来标记一个方法或者代码块,当某原创 2016-05-14 16:23:16 · 2581 阅读 · 2 评论 -
volatile关键字
volatile关键字的作用:强制从公共堆栈中去取得变量的值,而不是从线程私有数据栈中取得变量的值 volatile能够实现可见性,但不能实现原子性 参考博客http://www.cnblogs.com/dolphin0520/p/3920373.html原创 2016-05-14 17:02:44 · 303 阅读 · 0 评论 -
线程同步
java多线程同步有5中方法: 1)同步方法 : 即有synchronized关键字修饰的方法。 由于java的每个对象都有一个内置锁,当用此关键字修饰方法时, 内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。 2)2.同步代码块 即有synchronized关键字修饰的语句块。 被该关键字修饰的语句块会自动被加原创 2016-05-14 15:20:51 · 2366 阅读 · 0 评论 -
Synchronized关键字与线程通信
一.等待/通知机制 1.通过wait/notify实现等待/通知机制 wait():可以使调用该方法的线程释放共享资源的锁,然后从运行状态退出,进入等待队列,直到被再次唤醒 notify():可以随机唤醒等待队列中等待同一共享资源的一个线程,并使该线程退出等待队列,进入可运行状态,也就是notify()方法仅通知一个线程,且随机 notifyAll():可以使原创 2016-05-15 13:21:12 · 2142 阅读 · 0 评论 -
Lock的使用
一.synchronized与Lock的比较synchronized是java中的一个关键字,也就是说是Java语言内置的特性。那么为什么会出现Lock呢? 在前面的文章中,我们了解到如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待,等待获取锁的线程释放锁,而这里获取锁的线程释放锁只会有两种情况: 1)获取锁的线程执行完了该代码块原创 2016-05-15 15:12:02 · 3746 阅读 · 3 评论