《疯狂Java讲义》——多线程学习

进程:进程是系统进行资源分配和调度的一个独立单位
特征:①独立性 :进程是系统中独立存在的实体,拥有独立的资源,私有的地址空间。
②动态性 :进程与程序的区别在于,程序只是一个静态的指令集合,而进程是一个正在系统中活动的指令结合。在进程中加入了时间概念,进程具有自己的生命周期和 各种不同的状态,这些在程序的概念里面不具备。
③并发性 :多进程可以在单个处理器上并发执行,多个进程之间不会互相影响。

线程:也被称作轻量级进程,线程是进程的执行单元。
一个程序运行后至少有一个进程,一个进程可以包含多个线程,但至少要包含一个线程

线程间通讯三种方式:
①synchronized 存在同步监视器对象,使用wait、notify、notifyall方法来协调进程的运行
②locked await() 、signal()、signalAll()
③管道流

线程的创建和启动:继承Thread类,实现Runnable接口

两种方法

①new FirstThread().start();
②new Thread(new Runnable(){
       @Overrid
       private void run(){

                     }
                 }).start(); 

这里写图片描述

线程池
JDK1.5以前,开发者必须手动实现线程池,JDK1.5开始,Jaca内建支持线程池。
newCachedThreadPool():创建一个具有缓存功能的线池,系统根据需要创建线程,这些线程将会缓存的到线程池中。
newFixedThreadPool(int nThread):创建一个课重用的、具有固定线程数的线程池。
newSingleThreadExecutor()创建一个只有单线程的线程池,它相当于调用newFixedThreadPool()方法时,值传入1.
newScheduledThreadPool(int corePoolSize):创建具有指定线程数的线程池,它可以在指定延迟后执行线程任务。corePoolSize指池中所保留的线程数,即时线程是空闲的也被保留在线程池内。
newSingleThreadScheduledExecutor():创建只有一条线程的线程池,她可以在指定延迟后只想线程任务。
上面五个方法中前三个方法返回一个ExecutorServiece对象,该对象代表一个线程池,它可以执行Runnable对象或者Callable对象所代表的线程。而后两个方法返回一个ScheduledExcutorService线程池,它是ExecutorServicr的子类,它可以在指定延迟后执行任务。

public class TestThread implements Runnable {
    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {

            System.out.println(Thread.currentThread().getName() + "的i的值为:" + i);
        }

    }
}
        ExecutorService pool =Executors.newFixedThreadPool(6);   
        pool.submit(new TestThread());
        pool.submit(new TestThread());
        pool.shutdown();

ThreadLocal : 疯狂Java第791页

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值