Java多线程

进程

进程是一个包含自身执行地址的程序,在多任务操作系统中,可以把cpu时间分配给每一个进程,cpu在指定时间片段内执行某个进程,然后在下一个时间片段条至另一个进程中执行,由于转换速度很快,使人感觉进程像是在同时运行。

线程

在一个进程内部可以执行多任务,可以将进程内部的任务称为线程,线程是进程中的实体,一个进程可以拥有多个线程。

============ 我是分割线 ================
java语言中只能继承一个类,如果用户定义的类继承了其他类,就无法继承Thread类,也就无法使用线程,所以java语言提供一个接口,Runneble接口,这个接口定义了run()这个方法。

线程线程的启动:
使线程进入“非可执行”状态,这个状态下cpu不会分给线程时间这个状态可用来暂停一个线程的运行:①sleep ②join ③wait/notify④suspend()/resume()方法

结束线程:
(1)自然消亡
(2)强制死亡(舍弃不用)

创建线程

懒汉式
(单例模式)【浪费时间,把时间换空间】

class sigleton{
   //1.私有构造函数
   private Singleton(){}
        //2.声明一份本类的引用
        private static Singeton s;(先声明)
        //3.对外提供公共的访问方法
        public static Singleton getInstance(){
     if(s==null)
     //线程1,线程2   ——>用到的时候创建
     s= new Singleton();
     return s;       ——>懒汉式有可能创建多个对象
     
}

public static void print(){
   
}

   }
饿汉式
(节省时间,浪费空间,一般在开发时用)
class Singleton(){
   //1.私有构造函数
   private Singleton(){}
   //2.创建本类对象
   private static singleton s = new singleton();
   //对外提供公共的访问方法
   private static singleton getInstance(){
       return s;

}
public static void print(){
syso
}

}

sleep 和 wait 方法的区别
a.sleep方法必须传入参数
参数就是时间,时间到了自动醒来
wait方法,可以传入参数,也可以不传入参数,传入参数就是参数的时间结束后等待,不传入参数就是直接等待。

b.sleep方法再同步函数或者同步代码块中,不释放锁,使一个现线程暂时停止的方法,暂停的时间有给定的毫秒数决定

wait方法在同步函数或同步代码中释放锁,与notify()方法配合使用,这种方式让wait()无限等下去,直到线程接收到notify或者notify All()消息为止。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值