java多线程
文章平均质量分 86
等风de帆
这个作者很懒,什么都没留下…
展开
-
7、多线的异常处理
在普通的单线程程序中,捕获异常只需要通过try … catch … finally …代码块就可以了。那么,在并发情况下,比如在父线程中启动了子线程,如何正确捕获子线程中的异常,从而进行相应的处理呢?常见错误很简单嘛,直接在父线程启动子线程的地方try … catch一把就可以了,其实这是不对的。原因分析让我们回忆一下Runnable接口的run方法的完整签名,因为没有标识throws语句,所以方法原创 2017-12-21 21:52:10 · 385 阅读 · 0 评论 -
6、ThreadLocal线程变量
定义并发应用的一个关键地方就是共享数据。这个对那些扩展Thread类或者实现Runnable接口的对象特别重要。如果你创建一个类对象,实现Runnable接口,然后多个Thread对象使用同样的Runnable对象,全部的线程都共享同样的属性。这意味着,如果你在一个线程里改变一个属性,全部的线程都会受到这个改变的影响。Java中的ThreadLocal类可以让你创建的变量只被同一个线程进行读和写操作原创 2017-12-21 21:51:51 · 392 阅读 · 1 评论 -
5、守护线程
定义在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程、后台线程)只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。User和Daemon两者几乎没有区别,唯一的不同之处就在于虚拟机的离开:如果 User Thread已经全部退出运行了,只剩下Daemon Threa原创 2017-12-21 21:51:15 · 289 阅读 · 0 评论 -
4、基本的线程同步
monitor他们是应用于同步问题的人工线程调度工具。讲其本质,首先就要明确monitor的概念,Java中的每个对象都有一个监视器,来监测并发代码的重入。在非多线程编码时该监视器不发挥作用,反之如果在synchronized 范围内,监视器发挥作用。当某代码并不持有监视器的使用权时(如图中5的状态,即脱离同步块)去wait或notify,会抛出java.lang.IllegalMonitorSta原创 2017-12-21 21:50:56 · 311 阅读 · 0 评论 -
3、线程的调度
1. 线程睡眠 Thread.sleep(long millis)方法,使线程转到阻塞状态。millis参数设定睡眠的时间,以毫秒为单位。当睡眠结束后,就转为就绪(Runnable)状态。sleep()使当前线程进入停滞状态,所以执行sleep()的线程在指定的时间内肯定不会执行;由于sleep()方法是Thread类的方法,因此它不能改变对象的机锁。所以当在一个Synchronized方法中原创 2017-12-21 21:49:48 · 320 阅读 · 0 评论 -
2、线程的创建
线程的创建Java 提供了三种创建线程的方法: - 通过实现 Runnable 接口; - 通过继承 Thread 类本身; - 通过 Callable 和 Future 创建线程。我们将使用第二种方法来制作一个简单的程序,它能创建和运行10个线程。每一个线程能计算和输出1-10以内的乘法表。通过实现 Runnable 接口来创建线程创建一个名为Calculator的类,这个类要实现Runna原创 2017-12-21 21:49:22 · 343 阅读 · 0 评论 -
1、线程的基本概念
多线程线程与进程进程: 一个计算机程序的运行实例,包含了需要执行的指令;有自己的独立地址空间,包含程序内容和数据;不同进程的地址空间是互相隔离的;进程拥有各种资源和状态信息,包括打开的文件、子进程和信号处理。 线程: 表示程序的执行流程,是CPU调度执行的基本单位;线程有自己的程序计数器、寄存器、堆栈和帧。同一进程中的线程共用相同的地址空间,同时共享进进程锁拥有的内存和其他资源。#原创 2017-12-21 21:47:11 · 551 阅读 · 0 评论 -
8、线程的中断机制
中断线程 线程的thread.interrupt()方法是中断线程,将会设置该线程的中断状态位,即设置为true,中断的结果线程是死亡、还是等待新的任务或是继续运行至下一步,就取决于这个程序本身。线程会不时地检测这个中断标示位,以判断线程是否应该被中断(中断标示值是否为true)。判断线程是否被中断 判断某个线程是否已被发送过中断请求,请使用Thread.currentThread().i原创 2017-12-21 21:52:31 · 343 阅读 · 0 评论