您的位置:首页 > 编程语言 > Java开发

java多线程基本知识

2011-07-11 17:29 429 查看
1.java中想实现并发的对象需要实现java.lang.Runnable接口,实现其中的run方法。
2.可以用new Thread(new 并发类()).start(); 用Thread类来实现并发,java.lang.Thread类也实现了Runnable接口,在run方法中调用了一些native的方法。
3.在Java SE5/6以后,可以用ExecutorService来操作线程,比较方便,可以创建不同种类的线程池。
创建大小可变(需要多少有多少)的线程池:ExecutorService executorService = Executors.newCachedThreadPool();
创建固定大小的线程池:ExecutorService executorService = Executors.newFixedThreadPool(2);
创建单一的Executor:ExecutorService executorService = Executors.newSingleThreadExecutor();
然后调用executorService.execute(new 并发类());就可以实现并发了
最后调用executorService.shutdown()关闭服务。
可以给newCachedThreadPool()传入一个实现了ThreadFactory接口的对象,按照需求创建线程。
4.用Thead.sleep()方法使线程休眠,默认是毫秒单位,Java SE5/6之后可以使用TimeUnit.MILLISECONDS.sleep(100);来显示的指定单位,更容易理解。
5.如果一个需要知道一个线程执行完的返回值,则需要将java.lang.Runnable改成java.util.concurrent.Callable<>,用泛型声明返回类型,然后调用executorService.submit()方法就可以获得返回值了。
6.为了保护线程安全,防止资源冲突,在并发有可能同时执行同一方法时,需要给方法加上synchronized关键字,这样java就能在这个方法被调用的时候自动给方法加上锁,防止同时被调用。
7.java中将读或写32位以下(除long double(64)之外的所有基本类型)的操作称为原子操作,保证操作是不可分离的。
但是注意i++并不是原子操作,分三步进行,取,加,存
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: