接下来将介绍下NIO,如果你用过,那你将知道他的重要性,如果你没用过,那以后我保证你一定会用到。java1.4的api(不是1.4就是1.5)
我先表明,这些资料非本人个人总结,但也没有版权,拿出来给大家补补,学到知识才是重要的。
/*
* 问题:判断打印的是 one 还是 two ?
* 1. 启动两个线程分别调用连个非静态同步方法, 打印? one two
* 2. 在 getOne() 方法中添加 Thread.sleep() 后,打印? one two
* 3. 添加普通方法 getThree() 后,打印? three one two
* 4. 添加一个 Number 对象,一个调用 getOne(),一个调用 getTwo(), 打印? two one
* 5. 修改 getOne() 为静态同步方法, getTwo() 为普通同步方法,一个 Number 对象,打印? two one
* 6. 修改两个方法均为静态同步方法,一个 Number 对象, 打印? one two
* 7. 一个静态同步方法,一个非静态同步方法,两个 Number 对象,打印? two one
* 8. 两个静态同步方法,两个 Number 对象,打印? one two
*
* 总结:
* 1. 非静态同步方法默认的锁为:this。 静态同步方法默认的锁为:当前类的 Class 实例(Number.class)
* 2. 某一个时刻内,若某个线程持有当前锁,其他线程都不能持有该锁,无论几个方法。
*/
public class TestThread8Monitor { public static void main(String[] args) { final Number number = new Number(); final Number number1 = new Number(); new Thread(new Runnable() { @Override public void run() { number.getOne(); } }).start(); new Thread(new Runnable() { @Override public void run() { number1.getTwo(); } }).start(); /*new Thread(new Runnable() { @Override public void run() { number.getThree(); } }).start();*/ } } class Number{ public static synchronized void getOne(){//Number.class try { Thread.sleep(3000); } catch (InterruptedException e) { } System.out.println("one"); } public static synchronized void getTwo(){ System.out.println("two"); } public void getThree(){ System.out.println("three"); } }首先,先道个歉,这两天有些私事,不容易发文章,望大家谅解,以后多补哦!
至于NIO的其他api以后慢慢涉及,如果不太懂的人可以详细的看一下CSDN的相关博客,很详细的。
明白这个总结就可以。
---来自腾讯云社区的---聚沙成塔
微信扫一扫打赏
支付宝扫一扫打赏