`
wen303614
  • 浏览: 8077 次
社区版块
存档分类
最新评论
文章列表
 在前面2篇文章分别讲到了线程和进程的由来、以及如何在Java中怎么创建线程和进程。今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知识:线程的几种状态、上下文切换,然后接着介绍Thread类中的方法的 ...
Java ConcurrentModificationException异常原因和解决方法   在前面一篇文章中提到,对Vector、ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常。下面我们就来讨论以下这个异常出现的原因以及解决办法。   以下是本文目录大纲:   一.ConcurrentModificationException异常出现的原因   二.在单线程环境下的解决办法   三.在多线程环境下的解决方法   若有不正之处请多多谅解,并欢迎批评指正   请尊重作者劳动成果, ...
线程通信概念:线程是操作系统中独立的个体,但是这些个体不经过特殊的处理就不能成为一个整体,线程间的通信就成为整体的必用方式之一,当线程存在通信指挥,系统间的交互性会更强大,在提高cpu的利用率的同时,还会使开发人员对线程任务处理的过程中进行有效的把控和监督。 使用wait和notify 方法实现线程间的通信 (注意这两个方法都是object类的方法,换句话说java为所有对象都提供了这两个方法) wait 和notify必须配合synchronized关键字使用 wait方法释放锁,notify方法不释放锁   二,线程间的通信方式 ①同步 这里讲的同步是指多个线程通过syn ...
volatile概念 volatile关键字主要作用就是在多个线程之间可见,当一个变量被定义为volatile之后,就可以保证此变量对所有线程的可见性,即当一个线程修改了此变量的值的时候,变量新的值对于其他线程来说是可以立即得知的。可以理解成:对volatile变量所有的写操作都能立刻被其他线程得知。但是这并不代表基于volatile变量的运算在并发下是安全的,因为volatile只能保证内存可见性,却没有保证对变量操作的原子性   实例 public class RunThread extends Thread{ private boolean isRunning = t ...
synchronized锁重入 关键字synchronized拥有锁重入的功能,也就是在使用synchronized时,当一个线程得到一个对象的锁后,再次请求该对象是可以再次得到该对象的锁 示例: public class SyncDubbo1 { public synchronized void method1(){ System.ou ...
   脏读   对于对象的同步和异步方法,我们在设计自己的程序的时候,一定要考虑问题的整体性,不然会出现数据不一致的错误,很经典的错误就是脏读(dirtyRead)   public class DirtyRead { private String username = "bjsxt"; private String password = "123"; public synchronized void setValue(String username, String password){ this.username ...
  线程安全:当多个线程访问某一个类(对象或方法)时,这个对象始终都能表现出正确的行为,那么这个类(对象或方法)就是线程安全的   synchronized:    可以在任意对象及方法上加锁,而加锁的这段代码称为"互斥区"或"临界区"   例子:   public class MyThread extends Thread{ private int count = 5 ; //synchronized加锁 public void run(){ count--; System.out.println ...
Global site tag (gtag.js) - Google Analytics