java多线程

来源:互联网 发布:淘宝宝贝截图 编辑:程序博客网 时间:2024/06/16 09:13
1,Thread 类中的start() 和 run() 方法有什么区别?
2,Java中Runnable和Callable有什么不同?
Runnable和Callable都代表那些要在不同的线程中执行的任务。Runnable从JDK1.0开始就有了,Callable是在JDK1.5增加的。它们的主要区别是Callable的 call() 方法可以返回值和抛出异常,而Runnable的run()方法没有这些功能。Callable可以返回装载有计算结果的Future对象。
3,Java中如何停止一个线程?
4,Java中notify 和 notifyAll有什么区别?
5,三个线程T1,T2,T3,怎么确保它们按顺序执行?
6,Thread类中的yield方法有什么作用?
7,Java线程池中submit() 和 execute()方法有什么区别?
8,Java多线程中调用wait() 和 sleep()方法有什么不同?
9,单例模式的双检锁是什么?
10,Java中的ReadWriteLock是什么?
一般而言,读写锁是用来提升并发程序性能的锁分离技术的成果。Java中的ReadWriteLock是Java 5 中新增的一个接口,一个ReadWriteLock维护一对关联的锁,一个用于只读操作一个用于写。在没有写线程的情况下一个读锁可能会同时被多个读线程持有。写锁是独占的,你可以使用JDK中的ReentrantReadWriteLock来实现这个规则,它最多支持65535个写锁和65535个读锁。

java中的锁:出自 http://www.cnblogs.com/yeahwell/p/4544559.html
java里不能直接使用synchronized声明一个变量,而是使用synchronized去修饰一个代码块或一个方法。
详细说明如下:
     synchronized用来修饰一个方法或者一个代码块,它用来保证在同一时刻最多只有一个线程执行该段代码。
     一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。
     二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。
     三、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞。
     四、第三个例子同样适用其它同步代码块。也就是说,当一个线程访问object的一个synchronized(this)同步代码块时,它就获得了这个object的对象锁。结果,其它线程对该object对象所有同步代码部分的访问都被暂时阻塞。
     五、以上规则对其它对象锁同样适用。

原创粉丝点击