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++并不是原子操作,分三步进行,取,加,存
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++并不是原子操作,分三步进行,取,加,存
相关文章推荐
- java 多线程基本知识
- Java多线程整理(一)-基本知识
- 【JavaSE】Java中多线程基本知识
- Java中基本知识梳理【定时器实现多线程】-----2015年3月15日
- Java学习笔记【多线程基本知识】
- Java多线程设计(二)线程的基本知识(1)
- Java多线程设计(二)线程的基本知识(3)线程的协调
- Java基本知识之三(多线程)
- Java多线程设计(二)线程的基本知识(2)共享互斥
- Java【多线程知识总结(3)】调用join()合并线程
- Java多线程系列-实现多线程的最基本两种方式
- 黑马程序员——Java基本知识
- java内存原型分析-基本知识
- Java多线程(一)、多线程的基本概念和使用(转)
- Java中线程基本知识整理
- Java中的面试题 [3] --- Java高级知识、并发、多线程、JVM调优、分布式、设计模式等
- java多线程知识图谱
- Java 多线程(一) 基础知识与概念
- java基础知识总结-多线程(二)
- [知了堂学习笔记]_Java多线程(1)-- 基本概念并开始创建多线程程序