java学习笔记24

1.进程是什么?

一个可以独立运行的程序就是一个进程.在操作系统当中会为每一个
进程给定一个编号,这个编号就叫端口号.

2.线程是什么?
线程是组成进程的单元,是进程当中单一方向的顺序流.不能再分,操作系统下进行运算调度的最小单元.

线程的作用: 可以进行并发操作

3.线程的实现方式?

1>使用java.lang.Thread类来实现线程

     写一个类,然后让该类继承Thread类,重写Thread类的run方法
     
2>使用java.lang.Runnable接口来实现线程

        a.写一个类,实现Runnable接口,就是一个实现Runnable接口的实现类  
          Runnable接口当中有一个抽象方法,就是线程执行的方法
         b.可以使用Thread类带Runnable参数的构造方法来创建一个对象

   3>使用java.util.concurrent.Callable接口来实现线程

a> 写一个类,实现Callable接口,就是实现类
b>创建一个FutureTask的实例,利用它的带Callable参数的构造方法

c>使用Thread类的有参构造方法创建一个线程对象

4.线程的生命周期?

1>.新建状态(NEW) 线程对象刚开始创建之后就是NEW状态
2>.就绪状态(RUNNABLE) 当调用线程对象的start()方法就进入到就绪状态
3>.运行状态(RUNNING)
如果CPU为线程分配了执行权,就会进行运行状态,就去执行自身的run()方法
4>.阻塞状态(BLOCKED)
在线程运行过程当中,如果遇到睡眠(sleep),等待(wait()),
挂起(suspend)情况,线程都会进到阻塞状态,如果调用notify
notifyAll,resume可以将阻塞状态的线程再回到就绪状态

5>.死亡状态(Dead)
线程如果正常结束,或者调用线程的stop()方法就可以使线程死亡.

5.线程的同步?
多个线程去竞争同一个资源,为了保证这些线程的安全,引入线程的同步机制.

 wait()方法和sleep()方法的区别:
 
 1> wait()方法是java.lang.Object类的方法,
      sleep()方法是java.lang.Thread类的方法
 2> wait()方法会释放对象上的对象锁
      sleep()方法不会释放对象上的对象锁
 3> wait()和notifyAll()和notify()都要在同步方法或同步代码块内部使用,sleep()可以使用在任意位置
6.生产者消费者模型

    有2个线程    一个线程是生产者  另一个线程是消费者

猜你喜欢

转载自blog.csdn.net/qq_44144483/article/details/89305616
今日推荐