Java线程基本原理及操作

线程是什么?

线程是进程内的执行单元。因为进程的转换往往需要耗费很大的资源,所以线程的引入加大了程序的运行速度。现在的进程只作为资源的拥有者,而线程作为资源的调度和分配的基本单元。


线程的基本操作:

新建线程:

Thread t1 = new Thread(); 

Thread t2 = new Thread(new Runnable());


线程启动:

t1.start(); 启动的是线程内的run()方法,所以我们的代码都要在run()方法里进行重写。


线程终止:

Thread.stop() 不推荐使用,它会释放掉所有的monitor


线程中断:

public void Thread.interrupt()      //中断线程

public boolean Thread.isInterrupted()     //判断线程是否被中断

public static boolean Thread.interrupted    //判断线程是否被中断,并清除当前中断状态


线程运行:

Thread.join()    //等待线程结束再运行,在有多个线程时,需要考虑到数据执行

Thread.yeild()    //谦让,释放当前资源,并重新参与竞争

Thread.sleep(time)    //休眠time时间,不释放资源,等待time时间结束后继续运行


守护线程:

Thread t =new DaemonT();

t.setDaemon(true);

t.start()

//守护线程为jvm控制,如垃圾回收线程,JIT线程等,当程序内只有守护线程时,Java虚拟机就会自然退出


线程优先级:

public final static int MIN_PRIORITY = 1;

public final static int NORM_PRIORITY = 5;

public final static int MAX_PRIORITY = 10;

Thread t1 = new Thread();

t1.setPriority(Thread.MAX_PRIORITY);


线程的同步操作:

syschronized

--指定加锁对象:对给定对象加锁,进入同步代码前要获得给定对象的锁。

--直接作用于实例方法:相当于对当前实例加锁(即 new一个另外的实例无效),进入同步代码前要获得当前实例的锁。

--直接作用于静态方法:相当于对当前类加锁(即new一个新的实例同样有效),进入同步代码前要获得当前类的锁。


Object.wait()        //线程等待,注意即使被唤醒后在进入线程前要获得相应的对象锁。

Object.notify()    //随机唤醒在当前对象所等待的一个线程,假如执行唤醒操作后,还是没有释放当前的对象的话(比如执行了sleep操作        ),被唤醒的线程也同样执行不了,因为无法获取到相应的对象锁。

Object.notifyAll()    //唤醒所有在当前对象上等待的线程,再让他们去竞争这个对象锁。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值