-
join()其他线程一定要改该线程执行完毕,其他线程才有机会执行。 join(long millis)带时间参数,告知其他线程最长的等待时间(单位毫秒)。 join(long millis,int nanos)将毫秒单位精确到纳秒。查看全部
-
相关示意图(Thread和Runnable寄生于java.lang包)查看全部
-
相关基本概念 进程: 1.程序(任务)的执行过程,------ 动态性 2.它持有资源(共享内存,共享文件)和线程 ---- 载体 线程:(互斥,同步) 线程是系统中最小的执行单元 同一进程中有多个线程 线程共享进程的资源查看全部
-
Java线程——如何正确停止线程 一、错误一:stop()方法 1、not stop:stop()方法会使线程戛然而止 2、使程序突然中止,无法完成完整的业务步骤,也无法进行清理工作 二、错误二:interrupt()方法 1、interrupt()方法只能设置interrupt标志位(且在线程阻塞情况下,标志位会被清除,更无法设置中断标志位),无法停止线程 三、正确方法:设置退出标志 1、使用退出标志位来停止while循环 2、完成最后一次业务后跳出while循环后,之后进行一些清理工作查看全部
-
Thread中自带的stop()方法不推荐使用,会造成线程突然停止,无法进行正常的任务处理。查看全部
-
线程执行过程中几个重要的方法 sleep(); 让线程休眠一段时间, yield(); 让出当前线程的执行权限,让线程调度重新选择线程进行执行; join(); 让其他线程都停止,等待当前线程执行完毕。 当某个线程使用join()方法加入到运行中时,另一个线程会等待该线程执行完毕后再继续执行。查看全部
-
volatile关键字 保证了线程可以正确地读取其他线程写入的值,如果不写成volatile,由于可见性的问题,当前线程有可能不能读到这个值。 可见性JMM(JAVA内存模型)happens-before原则、可见性原则 用volatile修饰的变量,线程在每次使用该变量的时候,都会读取变量修改后的值查看全部
-
当线程并不是继承了Thread类而是实现了Runnable接口时,runnable中并没有getName()等方法,这时若想要调用这些方法就需要通过Thread类的静态方法currentThread()来获取当前线程的实体再调用。查看全部
-
线程的常用方法介绍查看全部
-
进程:程序(任务)的执行过程,持有资源(共享内存,共享文件)和线程。 线程:线程是系统中最小的执行单元,同一进程中有多个线程,线程共享进程的资源。 线程的交互分为互斥与同步。查看全部
-
Thread常用方法查看全部
-
java.lang包 class--->Tread interface--->Runnable public void run()提供了线程实际工作执行的代码查看全部
-
进程:程序(任务)的执行过程(动态性),持有资源(共享内存,共享文件)和线程 线程:是系统中最小的执行单元 同一进程中有多个线程,线程共享进程的资源 线程的交互:互斥、同步查看全部
-
java并发书籍查看全部
-
互斥的实现:synchronized(lockObj);java的语法保证的同一时间,只有一个线程获得lockObj 同步:wait(),notify(),notifyall(),都是属于object类,并不是thread类 wait set 类似于线程的休息室,访问共享数据的代码称为critical section。一个线程获取锁,然后进入临界区 ,发现某些条件不满足,然后调用锁对象上的wait方法,然后线程释放掉锁资源,进入锁对象上的wait set。其他线程可以获取所资源,然后执行,完了以后调用notify,通知锁对象上的等待线程。 Ps:若调用notify();则随机拿出(这随机拿出是内部的算法,无需了解)一条在等待的资源进行准备进入Critical Section;若调用notifyAll();则全部取出进行准备进入Critical Section。查看全部
举报
0/150
提交
取消