15.java线程(没谱的特点)

1.进程和线程

   多进程:操作系统同时运行多个任务;
   多线程:就是进程执行中的一个流程;
2.多线程程序运行模式
                               单线程和多线程
 
3.定义线程方法
   线程也是个对象。
   创建线程方法:
     1、定义一个线程类,继承 Thread并重写其中的方法run(),run里面的代码称为线程体。
           (java只支持单继承,用这种方法定义的类不能继承其他类java)
          启动线程:对象.start(),调用了的run方法。
  1. classMyThreadextendsThread{
       publicvoid run(){
       //处理具体逻辑
       }
    }
    newMyThread().start();
     2、第二种方法
           1)建立Runnable类的对象(线程的任务);
           2)生成一个 Thread对象,并将Runnable接口实现类的对象作为参数传递给 该Thread对象
                ri是 Runnable接口实现类的对象,执行工人。
                Thread t = new Thread(ri),
           3)通知Thread对象执行start()方法;
  1. classMyThreadimplementsRunnable{
       publicvoid run(){
         //处理具体的逻辑
        }
    }
    MyThread myThread =newMyThread();
    newThread(myThread).start();
     两种方案的区别:由于java单继承,第二种方法好处是线程的 线程体和执行线程给拆分开了
                                 建议用第二种。
     匿名内部类实现:
  1. newThread(newRunnale(){
       publicvoid run(){
      //处理具体的逻辑
      }
    }).start();
4.线程简单的控制方法
      1)中断线程
             -Thread.sleep() //休眠
             -Thread.yield() //让出CPU,重新抢
      2)  设置线程的优先级(最大10,最小1,可用静态常量来设置 MAX_PRIORITY)
             -getPriority()  //获取优先级
             -setPriority()  //设置优先级
           优先级高执行的概率越大,并不是第一个执行。
4.多线程的数据安全(访问完整性)
   多线程同用同一份数据的时候会产生该错误。并发性问题,引起竞争状态。
   情况: 生成的两个Thread对象,但是这两个Thread对象共用同一个线程体;
               每个线程都有名字,可以通过Thread对象的setName()方法设置线程名字。也可以使用 getName方法获取线程的名字,分别启动两个线程。
   同步线程解决方法:同步代码块(同步锁)
                     synchronized(this){}
5.synchronized
    1)同步代码块作用:
   一旦一个线程获得了一个对象的同步锁,那么这个对象上所有其他的同步的代码都是不能被其他
   线程执行的,都需要等待同步锁被释放后执行。
    synchronized(对象)
   2)同步方法:
public synchronized void fun1()
        锁住的对象也是this(调用这个函数的对象)
   3)同步方法和同步代码块区别:
         同步代码块指定具体哪个对象。同步方法锁住的就是调用这个函数的对象
        
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值