多线程

javaweb开发,有多线程的地方,已经使用servlet容器或者其他的框架进行封装了

开启多线程是为了同时运行多部分代码,每个线程都有自己的代码任务

Thread类用于描述多线程,run方法定义了需要执行的任务代码

创建线程方式1:继承Thread类,并复写run方法,调用start方法,开启线程并调用线程的任务执行run方法


Class Demo extends Thread{

      private Stirng name;

    Demo(String name){

    this.name =name;

}

  public void run(){

    for(int x = 0; x < 10; x++){
  System.out.println(name + "...x=" + x + "...ThreadName=" +
Thread.currentThread ().getName());

}

}


Class   ThreadDemo{

      Demo  d1 = new Demo();

      Demo d2 = new Demo();

      d1.start();

      d2.start();

   for(int x = 0; x < 20; x++){
 System.out.println("x = " + x + "...over..." +
Thread.currentThread().getName());
 }


}


创建线程的方式2:

    定义类实现Runnable接口,覆盖Runnable接口的run方法,将线程的任务代码封装到run方法中

   通过Thread 类创建线程对象,并把Runnable接口的子类对象作为Thread类的构造参数进行传递. 因为要执行的任务封装到了Runnable子类对象的run

方法中,所以在创建线程的时候就声明要运行的任务

 调用start开启线程

好处: 将线程的任务从线程的子类中分离出来.

  Class Demo implements Runnable{

   public void run(){

   show();

}

 public void show(){
 for(int x = 0; x < 20; x++){

  System.out.println(Thread.currentThread().getName() + "..." + x);
 }
 }

}


Class ThreadDemo{

   Demo d = new Demo();

  Thread  t1 = new Thread(d);

  Thread t2 = new Thread(d);

  t1.start();    

  t2.start();


}]

线程安全问题产生的原因:

当多个线程在操作共享的数据,

1.可以使用同步代码块来处理.

 synchronized(对象){

   需要被同步的代码

缺点: 每个线程都会去判断锁,浪费资源.

同步的前提:必须有多个线程并使用同一个锁.

2.同步函数来解决

同步函数的锁是this,同步代码块的锁是任意的对象

死锁:你无法获得我的锁,我也无法获得你的锁.



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值