20170905多线程

参考 http://www.cnblogs.com/wxd0108/p/5479442.html      

        http://blog.csdn.net/luoweifu/article/details/46613015

 

1.线程安全:就是指通过多线程运行一段程序会不会影响这个线程的运行结果。 如果会影响就是线程不安全的。线程安全大于系统性能!

@synchronized 同步锁 保证共享资源的多线程访问成为线程安全  

A. 无论synchronized关键字加在方法上还是对象上,如果它作用的对象是非静态的,则它取得的锁是对象;如果synchronized作用的对象是一个静态方法或一个类,则它取得的锁是对类,该类所有的对象同一把锁。 
B. 每个对象只有一个锁(lock)与之相关联,谁拿到这个锁谁就可以运行它所控制的那段代码。 
C. 实现同步是要很大的系统开销作为代价的,甚至可能造成死锁,所以尽量避免无谓的同步控制

 

 在线程外边try catch捕捉不到异常

      1. http://blog.csdn.net/ghsau/article/details/7451464       Callable和Future 的介绍

      Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更强大一些,被线程执行后,可以返回值,这个返回值可以被Future拿到,也就是说,Future可以拿到异步执行任务的返回值                          

public class CallableAndFuture {
public static void main(String[] args) {
Callable<Integer> callable = new Callable<Integer>() {
public Integer call() throws Exception {
return new Random().nextInt(100);
}
};
FutureTask<Integer> future = new FutureTask<Integer>(callable);
new Thread(future).start();
try {
Thread.sleep(5000);// 可能做一些事情
System.out.println(future.get());
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
}

 

 

 

 

 

 

 

 

 

    

 

posted @ 2017-09-06 11:03  行者--天马行空  阅读(113)  评论(0编辑  收藏  举报