功能性质网站,仙游h5做网站,最近的新闻军事最新消息,郑州做互联网推广的1.进程与线程定义
进程包含线程#xff0c;如一个百度网盘进程#xff0c;该进程的线程可以有上传#xff0c;下载。 2.创建线程的三种方式
方式1-继承Thread类 方式2-实现Runnabled接口 1.常规写法 2.匿名内部类写法 方式3-实现Callable接口 示例代码#xff1a; f1.get…1.进程与线程定义
进程包含线程如一个百度网盘进程该进程的线程可以有上传下载。 2.创建线程的三种方式
方式1-继承Thread类 方式2-实现Runnabled接口 1.常规写法 2.匿名内部类写法 方式3-实现Callable接口 示例代码 f1.get()方法得到call方法的返回值 也就是说当线程执行完后get方法才执行这样才能得到线程执行完后的返回值。
3.Thread的常用方法 示例代码
1.getName方法获取线程名称 2.setName(字符串)方法为线程取名 3.构造器super(name)方法为线程取名 4.sleep(毫秒值)线程睡眠 5.join()让当前该线程先执行完其他线程再执行 4.认识线程安全 5.线程同步解决线程安全问题
1.同步代码块synchronized 1.对于静态方法synchronized(类名.class) 2.对于示例方法synchronized(this) 2.同步方法 synchronized不但可以修饰方法还可以修饰成员变量、静态变量等。 同步代码块锁的范围更小性能更好因为需等待的范围小 3.Lock锁 1.创建锁对象并多态写法建议用final修饰 2.加锁和解锁解锁一定要放在finally里因为中间代码一旦出错未解锁的话该实例的其他线程会一直等待解锁 6.线程通信
wait()、notify()及notifyAll()方法。 示例代码 7.线程池
定义 创建线程池 方式一
构造器参数描述 参数五任务队列可以是new ArrayBlockingQueue(n)表示n个缓存队列new LinkedBlockingQueue()表示可以无限多个队列。任务队列是指线程排队的队列
参数六线程工程可以是Executors.defaultThreadFactory()表示使用默认的线程工程。
参数七任务拒绝策略如果是new ThreadPoolExecutor.AbortPolicy()表示抛异常进行处理。 注意事项 常用方法
1.线程池处理Runnable任务的方法 2.线程池处理Callable任务的方法 示例代码1处理Runnable线程 线程池并没有死亡 线程池的关闭 创建临时线程 都满了执行任务策略 示例代码2处理Callable线程 拒绝策略 方式二-Excutors工具类创建的线程可定期执行任务 pool就是线程池对象 注意事项 8.并发与并行及线程的生命周期 并发的每次处理16个线程所以说并发和并行同时进行的 sleep方法不会释放锁权限。 9.悲观锁、乐观锁 悲观锁示例代码
出现了线程安全问题 乐观锁示例代码