Java 并发编程实践基础 读书笔记: 第一章 JAVA并发编程实践基础
1.创建线程的方式:
- /**
- * StudySjms
- * <p>
- * Created by haozb on 2018/2/28.
- */
- public class ThreadDemo extends Thread {
- /**
- * 定义线程的名字
- * @param name
- */
- public ThreadDemo(String name) {
- super(name);
- }
- @Override
- public void run() {
- for (int i = ; i < ; i++) {
- System.out.println(this.getName()+":"+i);
- }
- }
- public static void main(String[] args) {
- for (int i = ; i < ; i++) {
- new ThreadDemo("name"+i).start();
- }
- }
- }
- /**
- * StudySjms
- * <p>
- * Created by haozb on 2018/2/28.
- */
- public class ThreadDemo implements Runnable {
- @Override
- public void run() {
- for (int i = ; i < ; i++) {
- System.out.println(Thread.currentThread().getName()+":"+i);
- }
- }
- public static void main(String[] args) {
- /* Runnable demo = new ThreadDemo();
- for (int i = 0; i < 3; i++) {
- new Thread(demo,""+i).start();
- }*/
- // 也可以直接采用内名内部类方式来创建
- final int num = ;
- for (int i = ; i < ; i++) {
- new Thread(new Runnable() {
- @Override
- public void run() {
- for (int i = ; i < num; i++) {
- System.out.println(Thread.currentThread().getName()+":"+i);
- }
- }
- },""+i).start();
- }
- }
- }
Executors其实就是工厂类,用来创建各种的线程池;
- import java.util.concurrent.*;
- /**
- * StudySjms
- * <p>
- * Created by haozb on 2018/2/28.
- */
- public class ThreadPool {
- public static void main(String[] args) {
- //ExecutorService pool = Executors.newFixedThreadPool(2);
- // 这种是固定线程数的线程池,控制了现场的最大并发量
- //ExecutorService pool = Executors.newCachedThreadPool();
- // 这种没有长度限制,会自动控制池的大小,如果任务多了,会创建新现场,如果任务少了,会回收线程
- //ScheduledExecutorService pool = Executors.newScheduledThreadPool(5);
- /*
- 这种例子是延迟3秒执行
- pool.schedule(new Runnable() {
- @Override
- public void run() {
- }
- },3,TimeUnit.SECONDS);*/
- /*
- 这种是延迟1秒 每3秒执行一次
- pool.scheduleAtFixedRate(new Runnable() {
- @Override
- public void run() {
- }
- },1,3,TimeUnit.SECONDS);*/
- /*
- 相当于单线程执行任务,有顺序
- ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
- */
- ExecutorService pool = new ThreadPoolExecutor(,,0L, TimeUnit.MILLISECONDS,new LinkedBlockingDeque<Runnable>());
- for (int i = ; i < ; i++) {
- final int tmp = i;
- Runnable run = new Runnable() {
- @Override
- public void run() {
- long time = (long)(Math.random()*);
- System.out.println(Thread.currentThread().getName()+":"+tmp+"sleeping"+time);
- try {
- Thread.sleep(time);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- };
- pool.execute(run);
- }
- pool.shutdown();
- }
- }
线程的基本控制方法:
Thread.sleep(); 使线程睡眠,放弃cpu
join :使一个线程等待另一个线程完事在执行。eg: t1里面,t2.join() t1暂停执行,立即执t2,t2执行完事之后再去执行t1
可以有参数,t2.join(10); 表示为t1只等t210毫秒就继续执行了
interrupt():中断线程,有些时候需要在线程执行过程中中断线程。
Java 并发编程实践基础 读书笔记: 第一章 JAVA并发编程实践基础的更多相关文章
- 深入Java虚拟机读书笔记第一章Java体系结构介绍
第1章 Java体系结构介绍 Java技术核心:Java虚拟机 Java:安全(先天防bug的设计.内存).健壮.平台无关.网络无关(底层结构上,对象序列化和RMI为分布式系统中各个部分共享对象提供了 ...
- javascript 数据结构和算法读书笔记 > 第一章 javascript的编程环境和模型
1.变量的声明和初始化 必须使用关键字 var,后跟变量名,后面还可以跟一个赋值表达式. var name; var age = 5; var str = 'hello'; var flg = fal ...
- Java核心技术(卷一)读书笔记——第一章(概述)
1.Java不提供多重继承,通过接口来实现.一个类只能继承一个父类,但是可以同时实现多个接口. 2.Java中的int类型的大小是固定的32位,以避免代码移植时候的不兼容问题.唯一的限制是int类型的 ...
- 《Java并发编程实战》读书笔记-第一部分 基础知识小结
并发技巧清单 可变状态是至关重要的 所有的并发问题都可以归结为如何协调对并发状态的访问.可变状态越少,就越容易确保线程安全性. 尽量将域声明为final类型,除非需要它们是可变的. 不可变对象一定是线 ...
- .net架构设计读书笔记--第一章 基础
第一章 基础 第一节 软件架构与软件架构师 简单的说软件架构即是为客户构建一个软件系统.架构师随便软件架构应运而生,架构师是一个角色. 2000年9月ANSI和IEEE发布了<密集性软件架构建 ...
- 《疯狂Java:突破程序员基本功的16课》读书笔记-第一章 数组与内存控制
很早以前就听过李刚老师的疯狂java系列很不错,所以最近找一本拿来拜读,再此做下读书笔记,促进更好的消化. 使用Java数组之前必须先对数组对象进行初始化.当数组的所有元素都被分配了合适的内存空间,并 ...
- 《Java编程思想》读书笔记-第一个Java程序
积少成多,欢迎大家关注我的微信公众号,共同探讨Java相关技术 今天的重点是:编写源代码.编译.运行.查看成果.除此之外,还需要搭建起与前面学习的知识的联系. 写本文时依据的系统环境是Windows1 ...
- 《css3实战》读书笔记 第一章 基于CSS需求而编写的HTML.
笔记说明 <CSS3实战手册第3版(影印版)>可以消除Web设计工作的痛苦,并且带给你:HTML--重新入门.如果你是HTML新手,你会学到如何以CSS友好的方式进行基本页面构造.若你是H ...
- Java 学习笔记 ------第一章 Java平台概论
本章学习目标: Java版本迁移简介 认识Java SE.Java EE.Java ME 认识JDK规范与操作 了解JVM.JRE与JDK 下载与安装JDK 一.Java版本迁移简介 书上已经表达得非 ...
- 《C++ Primer》读书笔记 第一章
读<C++ Primer>才知道,自己对C++知之甚少... 写个博客记录下自己C++的成长,只是读书笔记,不是对<C++ Primer>知识点的总结,而是对自己在书上看到的以 ...
随机推荐
- WebService之CXF注解报错(三)
WebService之CXF注解 1.具体错误如下 五月 04, 2014 11:29:28 下午 org.apache.cxf.wsdl.service.factory.ReflectionServ ...
- Reactor-反应器模式
Reactor模式:反应器模式,是高性能网络服务器中最为常用的一种模式,libevent,muduo,libuv等网络库都是以 Reactor模式构建.Reactor模式由同步事件多路分解器和具体事件 ...
- jQuery.extend 函数使用详解
JQuery的extend扩展方法: Jquery的扩展方法extend是我们在写插件的过程中常用的方法,该方法有一些重载原型,在此,我们一起去了解了解. 一.Jquery的扩展方 ...
- requests库使用
介绍: 发送HTTP请求的第三方库,比起之前用到的urllib,requests模块的api更加便捷(本质就是封装了urllib3) 安装:pip3 install requests 学习reques ...
- 【BZOJ1585】【Luogu2944】地震损失2(网络流)
[BZOJ1585][Luogu2944]地震损失2(网络流) 题面 题目描述 Wisconsin has had an earthquake that has struck Farmer John' ...
- [BZOJ1609] [Usaco2008 Feb] Eating Together麻烦的聚餐 (dp)
Description 为了避免餐厅过分拥挤,FJ要求奶牛们分3批就餐.每天晚饭前,奶牛们都会在餐厅前排队入内,按FJ的设想所有第3批就餐的奶牛排在队尾,队伍的前端由设定为第1批就餐的奶牛占据,中间的 ...
- c++ STL容器适配器
一.标准库顺序容器适配器的种类 标准库提供了三种顺序容器适配器:queue(FIFO队列).priority_queue(优先级队列).stack(栈) 二.什么是容器适配器 &q ...
- datatable 多字段 排序;
没有找到datatable的排序方面运用案例,根据接口,自己实现 所以记录一二,小伙伴们有更好的方法,欢迎讨论 1.需求图 2.需求 1)默认 未开启 灰色下箭头 2)第一次点击 :启动排序,降序- ...
- Several ports (8005, 8080, 8009)被占用
启动Tomcat服务器报错: Several ports (8005, 8080, 8009) required by Tomcat v5.5 Server at localhost are alre ...
- Fiddler抓取https设置及其原理
iddler抓取https设置及其原理 2018-02-02 目录 1 HTTPS握手过程2 Fiddler抓取HTTPS过程3 Fiddler抓取HTTPS设置参考 数字签名是什么? 1 HTTPS ...