您的位置 首页 > 腾讯云社区

NIO之线程8锁---聚沙成塔

接下来将介绍下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的相关博客,很详细的。

明白这个总结就可以。

---来自腾讯云社区的---聚沙成塔

关于作者: 瞎采新闻

这里可以显示个人介绍!这里可以显示个人介绍!

热门文章

留言与评论(共有 0 条评论)
   
验证码: