java + 线程系列之一些定义(小结)
来源:互联网 发布:sql数据库文件怎么打开 编辑:程序博客网 时间:2024/06/05 16:15
**1,原子性操作:
原子性就是说一个操作不可以被中途CPU暂停然后调度,即不能被中断,要么就执行完,要不就不执行,如果一个操作是原子性的,那么在多线程环境下,就不会出现变量被休息室等奇怪的问题**
**2, 多态:
是指允许不同类的对象对同一消息做出响应,即同一消息可以根据发送对象的不同而采用多种不同的行为方式 . 同一件事发生在不同的对象会产生不同的结果**
**3, 匿名内部类
匿名类是不能有名称的类,所以没有办法引用他们, 必须在创建时,作为new语句的一部分来声明它们, 这就要采用另一种形式的new语句,如下所示: new<类或接口><类的主体>这种形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口,它还创建那个类的一个新的实例,并把它们作为语句的结果而返回.要扩展的类和要实现的接口是new语句的操作数,后跟匿名类的主体.如果匿名类对另一个类进行扩展,它的主体可以访问类的郑源,覆盖它的方法等等,这和其他任何标准的类都是一样的,若果匿名类实现了一个接口,他的接口必须实现接口的方法
1.怎样判断一个匿名类的存在啊?
看不见名字,感觉只是父类new出一个对象而已,没有匿名类的名字。
一般来说,new 一个对象时小括号后应该是分号,也就是new出对象该语句就结束了。
但是出现匿名内部类就不一样,小括号后跟的是大括号,大括号中是该new 出对象的具体的实现方法。
因为我们知道,一个抽象类是不能直接new 的,必须先有实现类了我们才能new出它的实现类。
new Thread(new Runnable() { @Override public void run() { pdl.p1(); } }).start();
在使用匿名内部类时,要记住以下几个原则:
·匿名内部类不能有构造方法。
·匿名内部类不能定义任何静态成员、方法和类。
·匿名内部类不能是public,protected,private,static。
·只能创建匿名内部类的一个实例。
·一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。
·因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。
·内部类只能访问外部类的静态变量或静态方法。
**
**4, 同步锁: synchronized
a, 把synchronized当做函数修饰符时
,也就是同步方法,那这时synchronized锁定那个对象呢,它锁定的是调用这个同步方法对象,也就是说,当一个对象P1在不同的线程中执行这个同步方法时,它们之间会形成互斥,达到同步的效果,但是这个对象所属的Class所产生的另一个对象P2却可以任意调用这个被加了synchronized关键字的方法
b, 同步可以理解成等待某一件事情结束才能开始做下一件事情
同步:是阻塞的,就是你做了这件事情,没做完就做不了其他的事情了
**
//锁是什么 // 锁是一个对象 // 假如A线程先访问这个del方法 // 那么锁对象就会被A线程持特有其他(BCD)想访问del方法的时候 // 就会发现锁对象被A线程拿走了, // 那么(BCD)就都不能进入到del方法中 // 当A线程执行完毕del方法,会将锁对象释放出来 // 这时候(BCD)线程再争夺执行权. // 谁抢到了,谁来执行sel方法 谁执行sel方法, // 那么谁就又拿到了锁对象 // 这个时候剩下的两个线程就又进不来del方法中了 //使用关键字的两种方式 //1, 在方法声明上,使用synchronized关键字修饰 //2, 使用synchronized代码块将要执行的代码包起来 public synchronized void del() { for (int i = 0; i < 2500; i++) { count -= 1; System.out.println(Thread.currentThread().getName() + "========" + count); } } //2, 使用synchronized代码块将要执行的代码包起来 public void del1() { synchronized (this) { for (int i = 0; i < 2500; i++) { count -= 1; System.out.println(Thread.currentThread().getName() + "========" + count); } } }
- java + 线程系列之一些定义(小结)
- Java 多线程、并发系列之线程定义和线程状态
- java线程池之小结
- java知识系列之线程
- Java之定义and启动线程
- Java线程池之FutureTask【Java线程池系列3】
- 【java线程系列】java线程系列之java线程池详解
- java线程系列---同步器之CountDownLatch
- java线程系列---同步器之Exchanger
- java知识系列之线程死锁
- Java多线程系列之线程状态图
- Java + 线程系列之死锁(六)
- Java + 线程系列之join(七)
- Android官方开发文档Training系列课程中文版:线程执行操作之定义线程执行代码
- java 线程 小结
- java 线程小结
- java 线程小结
- java 线程小结
- 探索ReactNative应用
- 矩阵伪逆介绍及C++/OpenCV/Eigen的三种实现
- 微信小程序----实例源码大全下载
- MYSQL如何进行sql like (sql查询结果)的查询
- 亚洲诚信首推MySSL.com,获WHD2017年最佳云安全奖
- java + 线程系列之一些定义(小结)
- 搜索网址整理
- 输入一串数字以不同数量的空格分割数字,输出最小的数
- 【代码笔记】iOS-NSNotificationCenter
- 分布式消息系统:Kafka
- PyTorch——Tensor_把索引标签转换成one-hot标签表示
- 分针网—每日分享:express for node 路由route几种实现方式的思考
- ORACLE 使用rman备份通过restore、recover恢复standby库ORA-10877实战
- Android_动态权限管理的解决方案