-
synchronizede(){}实现了线程的互斥 wait()和notifyAll()方法实现了线程的同步查看全部
-
接上面笔记 需要notify 当条件满足时则需要进行通知等待的线程,lockObj.notifyAll()查看全部
-
锁里面本来是 if 后面改为while 并且wait 这样的的好处是 1:第一种写法,如果条件不满足,该线程还是回去抢锁的,其实条件不满足的话,你不应该去抢才对,而应该阻塞 2:所以就有了第2中写法,如果条件不满足就阻塞,这里是用wait,等条件满足了在去唤醒这个时候就又可以参与到进去了查看全部
-
多线程中的互斥: 1.创建一个Object对象 private final Object lockObj=new Object() 2.利用synchronized关键字:synchronized(lockObj){放关键业务代码,表明对该代码进行互斥}查看全部
-
(争用条件) 多个线程访问一个共享数据,导致共享区域的数据发送变化查看全部
-
1.获取线程名称:getName(); 2.取得当前线程对象:currentThread(); 3.判断是否启动:isAlive(); 4.强行运行:join(); 5.线程休眠:sleep(); 6.线程礼让:yield(); 线程停止: 1、调用stop()方法会使线程戛然停止,而无法知道线程任务完成情况,官方已经不推荐使用。 2、interrupt()方法设置线程的标识位,并在线程中判断标志位的状态,从而结束线程,但是当在线程中开启了另外的线程时,比如在线程中Tread.sleep(),这时候调用interrupt()方法设置标志位可能设置的是你想要停止的线程,也可能是想要停止的线程中的线程的标志位,因此interrupt()方法也并不能很好的结束线程。 3、第三种方法,在线程的类声明一个volatile变量来记录线程的状态,相当于interrupt()方法那样,volatile关键字表示线程中的变量可以接受外部其他线程改变。因此可以在需要停止的地方设置volatile声明的变量的值设置为状态,并在执行run()函数里判断是否结束。 什么时候使用thread 什么时候使用runnable 其实两种方式效果一样,但推荐使用runnable 因为Java是单继承,继承了thread就不能继承其他的类 而实现runnable接口的话,扩展性要好很多查看全部
-
在Java的线程Thread类中有三个方法,比较容易混淆,在这里解释一下 (1)interrupt:置线程的中断状态 (2)isInterrupt:线程是否中断 (3)interrupted:返回线程的上次的中断状态,并清除中断状态 一般来说,阻塞函数,如:Thread.sleep、Thread.join、Object.wait、LockSupport.park等在检查到线程的中断状态时,会抛出InterruptedException,同时会清除线程的中断状态 对于InterruptedException的处理,可以有两种情况: (1)外层代码可以处理这个异常,直接抛出这个异常即可 (2)如果不能抛出这个异常,比如在run()方法内,因为在得到这个异常的同时,线程的中断状态已经被清除了,需要保留线程的中断状态,则需要调用Thread.currentThread().interrupt() 另外,Thread.interrupted()在jdk库的源代码中比较常用,因为它既可以得到上一次线程的中断标志值,又可以同时清除线程的中断标志查看全部
-
正确停止线程 使用设置退出标志 boolean keeprunning=ture;利用while循环 停止的时候可以把 keeprunning=false查看全部
-
stop()方法是一种错误的停止线程的方法,一般不使用stop方法查看全部
-
***线程的常用方法查看全部
-
进程:程序(任务)的执行过程---动态性 持有资源(共享内存,共享文件)和线程 开个QQ,开了一个进程;开了迅雷,开了一个进程。 在QQ的这个进程里,传输文字开一个线程、传输语音开了一个线程、弹出对话框又开了一个线程 线程:qq聊天、收发文件 线程是系统中最小的执行单元 同一进程中有多个线程 线程共享进程的资源 线程的交互 互斥 同步查看全部
-
1.在同一时间,同一处理器或同一个核只能运行一条线程,当一条线程休眠之后,另一条线程才获得了我们处理器的时间 2.一个.java文件中可以有多个类,但是只能有一个public修饰的类 3.Runnable接口之中没有getName方法,我们可以使用Thread的静态方法currentThreat().getName()获取该对象的名字。 4.若实现接口通过Thread.currentThread().getName()方法获取当前线程名称,继承Thread则getName()方法获取当前线程。查看全部
-
线程的交互:互斥 同步 线程是系统中最小的执行单元 同一进程中有多个线程 线程共享进程的资源查看全部
-
lockObj.wait() lockObj.notifyAll()查看全部
-
解决 争用条件 条件互斥 synchronized(object )查看全部
举报
0/150
提交
取消