黑马程序员---线程

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------
1.进程:一个应用就是一个进程。
进程是控制程序的执行先后顺序,该顺序是一个执行路径,或者叫一个控制单元。
  线程:线程是进程中的一个分支,它可以与进程(主线程)并行运行。一个进程中至少有一个线程(主线程)。

2.线程的创建:
a.继承方式:直接继承Thread,然后复写run()方法。new线程对象调用start()开启线程。
//定义一个类,继承Thread类.
class myThread extends Thread
{
//对run()方法进行重写.
public void run()
{
}
}
public myThreadTest
{
//主函数
public static void main(String[] args)
{
//调用start()方法启动线程
new myThread().start();
}
}
b:实现方式:实现Runnable接口,然后复写run()方法。new线程对象调用start()开启线程。
 //实现Runnable接口.
  class myThread implements Runnable
  {
  //重写run()方法
  public void run()
  {
  }
  }
  public class myThreadTest
  {
  public static void main(String[] args)
  {
  //new一个线程对象,参数为实现Runnable接口的对象,然后调用线程对象的start()方法启动线程
new Thread(new myThread()).start();
  }
  }
3.多线程的安全问题:
a.用synchronized(key)给容易出现安全问题的代码同步。也就是加锁。相当于一个权限的问题,加锁之后就可以进行操作了,操作完成后在解锁。这样更安全
    同步前提:1.必须要有两个或以上的线程;2.必须是多个线程用同一个锁。

b.同步代码块:是用synchronized把需要同步的代码包含在内
synchronized(new Object())//给synchronized下面的代码加锁.锁是new Object()
{
//需同步的执行代码。
}
  同步函数(锁是this,静态同步函数的锁是class对象(类名.class)。)
  public synchronized void show()对代码进行加锁
  {
//需同步的执行代码。
  }
4.守护线程:也称为后台线程,主线程结束,守护线程自动结束。在开启线程start()方法前通过setDaemon()方法开启守护线程
class StopThreadDemo 
{
public static void main(String[] args) 
{
//创建守护线程.
StopThread st =new StopThread();
//创建线程,并传入守护线程
Thread t1=new Thread(st);
//创建线程,并传入守护线程
Thread t2=new Thread(st);
//开启t1守护线程
t1.setDaemon(true);
//开启t2守护线程
t2.setDaemon(true);
//启动t1线程
t1.start();
//启动t2线程
t1.start();
}
}
class StopThread implements Runnable//实现Runnable接口
{
//重写run()方法
public void run()
{
//代码
}
}
5.死锁:多个线程同时被阻塞,他们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不能正常终止。
例如有t1,t2两个线程
线程t1锁定一些资源,线程t2也锁定一些资源,
而t1执行完之后需要得到t2锁定的资源才能进行操作。
且t2执行完之后也需要得到t1锁定的资源才能进行操作。
这时两个线程都出现了要得到资源之后才能继续执行。而t1霸占着t2的资源,t2也霸占着t1的资源。都获取不到自己所需资源,也都不释放当前资源。因此形成了线程的死锁。
---------------------- ASP.Net+Android+IOS开发 .Net培训 、期待与您交流! ----------------------详细请查看: http://edu.csdn.net
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值