![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
文章平均质量分 75
hi_gebilaowang
这个作者很懒,什么都没留下…
展开
-
多线程(四)线程的同步之线程安全问题
关于线程安全问题,有一个经典的问题:银行取钱的问题。银行取钱的基本流程可以分为如下几个步骤:1、用户输入账号、密码,系统判断用户的账户、密码是否匹配;2、用户输入取款金额;3、系统判断账户余额是否大于取款金额;4、如果余额大于取款金额,取款成功;如果余额小于取款金额,则取款失败。初步看上去,这个流程确实就我们日常生活中经常见到的,没有任何问题。但是如果将这个流程放到多线程并发的原创 2016-08-18 20:51:50 · 576 阅读 · 0 评论 -
多线程(三)线程控制之线程让步
yield()方法是一个和sleep()方法有点类似的方法,它也是Thread类提供的一个静态方法,它可以让当前正在执行的线程暂停,但它不会阻塞该线程,它只是将该线程转入就绪状态。yield()只是让当前线程暂停一下,让系统的线程调度器重新调度一次,完全可能的情况是:当某个线程调用了yield()方法暂停之后,线程调度器又将其调度出来重新执行。实际上,当某个线程调用yield()方法暂停之后,原创 2016-08-14 12:43:39 · 2264 阅读 · 0 评论 -
多线程(三)线程控制之线程睡眠
如果需要让当前正在执行的线程暂停一段时间,并进入阻塞状态,则可以通过调用Thread类的静态sleep()方法来实现。sleep()方法有两种重载形式。A、static void sleep(long millis):让当前正在执行的线程暂停millis毫秒,并进入阻塞状态,该方法受到系统计时器和线程调度器的精度与准确度的影响。B、static void sleep(long millis原创 2016-08-14 12:29:10 · 5675 阅读 · 0 评论 -
多线程(三)线程控制之后台线程
有一种线程,它是在后台运行的,它的任务是为其他的线程提供服务,这种线程被称为“后台线程(Daemon Thread)”,又称为“守护线程”或“精灵线程”。JVM的垃圾回收线程就是典型的后台线程。后台线程有个特征:如果所有的前台线程都死亡,后台线程会自动死亡。调用Thread对象的setDaemon(true)方法可将指定线程设置成后台线程。下面程序将执行线程设置成后台线程,可以看到当所有的原创 2016-08-14 12:09:25 · 1390 阅读 · 0 评论 -
多线程(二)线程的创建和启用
Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。每个线程的作用是完成一定的任务,实际上就是执行一段程序流(一段顺序执行的代码)。Java使用线程执行体来代表这段程序流。一、继承Thread类创建线程类package gblw.fisrt;//通过继承Thread类来创建线程类public class FisrtThread extends Th原创 2016-08-13 16:11:44 · 256 阅读 · 0 评论 -
多线程(四)线程的同步之同步方法
与同步代码块对应的,Java的多线程安全支持还提供了同步方法,同步方法就是使用synchronized关键字来修饰某个方法,该方法称为同步方法。对于同步方法而言,无须显式指定同步监视器,同步方法的同步监视器是this,也就是该对象本身。通过使用同步方法可以非常方便地将某类编程线程安全的类,线程安全的类具有如下特征:A、该类的对象可以被多个线程安全的访问;B、每个线程调用该对象的任意方法原创 2016-08-19 13:34:40 · 341 阅读 · 0 评论 -
多线程(三) 控制线程之join线程
Java的线程支持提供了一些便捷的工具方法,通过这些便捷的工具方法可以很好地控制线程的执行。Thread提供了让一个线程等待另一个线程完成的方法——join()方法。当在某个程序执行流中调用其他线程的join()方法时,调用线程将被阻塞,直到被join()加入的join()线程执行完为止。join()方法通常由使用线程的程序调用,以将大问题划分成许多小问题,每个小问题分配一个线程。当所有的原创 2016-08-14 11:51:27 · 1334 阅读 · 1 评论 -
多线程(一)进程与线程概念
1、什么是线程?答:几乎所有的操3作系统都支持同时运行多个任务,一个任务通常就是一个程序,每个运行中的程序就是一个进程。当一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个线程。2、线程与进程是什么呢?答:几乎所有的操作系统都支持进程的概念,所有运行中的任务通常对应一个进程(Process)。当一个程序进入内存运行时,即变成一个进程。进程是处于运行过程中的程序,并且具原创 2016-08-13 15:24:53 · 393 阅读 · 0 评论 -
多线程(四)线程的同步之同步代码块
之所以会出现《多线程(四)线程的同步之线程安全问题》文章中的问题,其原因是因为run方法体不具有同步安全性:程序中有两条并发线程在修改Account对象。一个线程进入方法准备减少取钱金额,但是还没减少取钱金额时,另一个线程由于判断金额没有减少,故可以进入取钱方法体中,因而造成余额负数情况出现。为了解决这个问题,Java的多线程支持引入了同步监视器来解决这个问题,使用同步监视器的同步方法就是同步原创 2016-08-19 10:36:59 · 815 阅读 · 0 评论 -
多线程(三)线程控制之线程优先级
每个线程执行时都具有一定的优先级,优先级高的线程获得较多的执行机会,而优先级低的线程则获得较少的执行机会。每个线程默认的优先级都与创建它的父线程的优先级相同,在默认情况下,main线程具有普通优先级,由main线程创建的子线程也具有普通优先级。Thread类提供了setPriority(int newPriority)、getPriority()方法来设置和返回指定线程的优先级,其中set原创 2016-08-14 13:20:36 · 2911 阅读 · 0 评论