随笔分类 - Java多线程
摘要:同步方法默认使用this或者当前类做为锁。 同步代码块可以选择以什么来加锁,比同步方法更精确,我们可以选择只有会在同步发生同步问题的代码加锁,而并不是整个方法。 同步方法使用synchronized修饰,而同步代码块使用synchronized(this){}修饰。
阅读全文
摘要:线程分为两种,一种是用户线程,另外一种是守护线程。 守护线程最经典的实现就是GC(垃圾回收机制) 守护线程是一种特殊的线程,当进程中不存在非守护线程时,守护线程也就自动销毁的。 用个比较通俗易懂的比喻来解释一下吧: 任何一个守护线程都是JVM中所有非守护线程的“保姆”,只要JVM中还有非守护线程在运
阅读全文
摘要:在操作系统中,线程可以划分优先级的,优先级较高的线程得到的CPU资源较多。(也就是说比那些优先级比自己低的线程执行速度快) 设置线程的优先级使用setPriority()方法。 在java中,线程的优先级可以分为1-10个等级,小于1或者大于10都会抛出java.lang.IllegalArgume
阅读全文
摘要:java线程停止可以说是非常有讲究的,看起来非常简单,但是也要做好一些防范措施,一般停止一个线程可以使用Thread.stop();来实现,但是最好不要用,因为他是不安全的。 大多数停止线程使用Thread.interrupt()方法,但是这个方法不会终止一个线程,还需要加入一个判断才可以完成线程的
阅读全文
摘要:介绍一些多线程中的常用方法: 暂停继续: suspend()和 resume()方法: 线程的暂停和恢复,使用 suspend()方法使线程进入阻塞状态,不可以自动恢复,可使用resume()方法将线程唤醒。 yield()方法: yield()方法的作用是放弃当前CPU资源,将他让给其他的任务去使
阅读全文
摘要:多线程中一定会遇到线程安全的问题,也就是在同一时间N条线程操作了同一变量,这个变量也叫做共享变量。 举例:(错误的示范) 设计一个投票系统,多个人可以对同一个的票数进行投票,下面看具体代码: 代码: 看代码貌似没什么问题,但是见到打印的语句就会发现问题了: 明明小红投完票之后,小明的票应该是1,但是
阅读全文
摘要:java实现多线程有两种方式,一种是继承Thread类,另外一种就是实现Runnable接口。 两种实现方法的优缺点: 使用Thread类实现多线程局限性就是不支持多继承,因为java是不支持类多继承的,除此之外两种多线程没有任何区别。 (如果你想创建线程的类已经有一个父类了,那么你只能实现Runn
阅读全文
摘要:进程: 进程可以理解为一个正在运行的程序,每一个运行的程序都是一个进程。 线程: 线程可以为在进程中运行的子任务,一个进程可以有N个线程(N <= 1)。 多线程的优点: 举个例子,一个人两天可以完成的刚工作(一条线程工作两天),那么两个人一天就可以完成了(两条线程工作一条)。很明显,工作效率翻倍,
阅读全文