
多线程
wangpanbaoding
这个作者很懒,什么都没留下…
展开
-
wait和notify
new Thread(new Runnable() { @Override public void run() { long id = Thread.currentThread().getId(); Log.i(TAG, "thread1 id :" + id + " begin"); new Thread(new Runnable(原创 2017-10-27 15:33:37 · 249 阅读 · 0 评论 -
wait、sleep、interrupt、notify
Wait导致当前的线程等待,直到其他线程调用此对象的 notify方法或 notifyAll 方法。当前的线程必须拥有此对象监视器。该线程发布对此监视器的所有权并等待,直到其他线程通过调用 notify 方法,或 notifyAll 方法通知在此对象的监视器上等待的线程醒来。然后该线程将等到重新获得对监视器的所有权后才能继续执行。Sleep在指定的毫秒数内让当前正在执行的线程休眠(转载 2013-07-02 15:56:01 · 1076 阅读 · 0 评论 -
sleep和wait的区别
1、这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用了b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。sleep不出让系统资源;w转载 2013-07-02 15:23:33 · 466 阅读 · 0 评论 -
线程状态的转换
一、线程状态 线程的状态转换是线程控制的基础。线程状态总的可分为五大状态:分别是生、死、可运行、运行、等待/阻塞。用一个图来描述如下: 1、新状态:线程对象已经创建,还没有在其上调用start()方法。 2、可运行状态:当线程有资格运行,但调度程序还没有把它选定为运行线程时线程所处的状态。当start()方法调用时,线程首先进入可运行状态。在线程运行之后或者从阻塞原创 2013-07-01 16:39:09 · 567 阅读 · 0 评论 -
什么时候使用多线程
先补充几个小知识:一,线程的toString方法,返回该线程的字符串表示形式,包括线程名称、优先级和线程组。二,线程的优先级默认是5,可以通过setPriority()方法更改线程的优先级。1-10中,1、5、10的效果最明显,所以用常量表示MIN_PRIORITY\NORM_PRIORITY\MAX_PRIORITY。三,线程的yield()方法暂停当前正在执行的线程对象,并执行原创 2013-06-27 13:46:33 · 1880 阅读 · 0 评论 -
线程的join方法
package fighting;public class ThreadJoin { /** * join方法: * 当A线程执行到了B线程的join方法时,A就会等待,等B线程都执行完,A才会执行。 * * join方法可以用来临时加入线程执行。 * */ public static void main(String[] args)原创 2013-06-27 12:58:28 · 750 阅读 · 0 评论 -
Java中继承Thread和实现Runnable这两种创建线程有何区别
Java中线程的创建有两种方式:1. 通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中2. 通过实现Runnable接口,实例化Thread类在实际应用中,我们经常用到多线程,如车站的售票系统,车站的各个售票口相当于各个线程。当我们做这个系统的时候可能会想到两种方式来实现,继承Thread类或实现Runnable接口,现在看一下这两种方式实现的两种转载 2013-06-26 22:30:04 · 1025 阅读 · 0 评论 -
停止线程
注意一种特殊情况:线程调用wait方法进入冻结状态(中断状态)时,不会读取到标记,如果没有唤醒,那就会一直等待,结束不了。这时候,可以使用interrupt方法,是程序中断,这个方法会抛出InterruptedException异常,可以把在catch块里改变线程标记,使线程结束。一,停止线程package fighting;public class ThreadStopDemo { /*原创 2013-06-26 18:00:24 · 545 阅读 · 0 评论 -
生产者-消费者的经典案例升级版(jdk1.5版)
在jdk1.5中,多了一个新包java.util.concurrent,在这个包下面有关于线程操作的接口和类。这里主要用到了Lock和Condition。 package fighting;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import jav原创 2013-06-26 16:07:33 · 792 阅读 · 0 评论 -
生产者-消费者的经典例子
package fighting;public class ThreadProducerConsumer { /** * 生产者-消费者的例子 * 对于多个生产者和消费者,为什么要定义while判断标记, * 原因:让被唤醒的线程再一次判断标记。 * * 总结:当出现多个生产者和消费者的情况,必须使用while判断标记,用notifyAll唤醒线程。原创 2013-06-26 16:00:42 · 1050 阅读 · 0 评论 -
线程间通信
之前的售票程序或者银行取钱例子中,所有线程执行的代码都是一样的。线程间通信:A线程往里存,B线程往外取。AB线程的动作不一致,也就需要有两个run方法。两个run方法就要存在两个线程当中。什么时候可以取,什么时候可以存,这就需要线程之间的通信。例子:一个写入线程负责写,读取线程负责读,两者操作的是同一个资源,但是操作的动作是不同的。这时就要进行线程间通信。package fight原创 2013-06-26 11:13:32 · 579 阅读 · 0 评论 -
学习笔记之多线程
------- android培训、java培训、期待与您交流! ----------一,创建线程的第一种方式:继承Thread类 线程的一些小知识package fighting;public class ThreadDemo { /** * 线程: * 创建线程的第一种方式:继承Thread类。 * 步骤: * 1,定义类继承T原创 2013-06-18 22:27:12 · 576 阅读 · 0 评论