一 exdents(继承) thread + (从写)run() 启动:创建子类对象+.start()
二 implements(实现)Runnable + 从写)run() 启动:使用静态代理 1, 创建对象 MyThread mt = new MyThread(); 2, 创建代理对象 Thread th = new Thread(mt,"名字"); 3, 代理对象 th.start
推荐使用Runnable 接口 1.避免单继承的局限性 2.便于资源共享
三 线程的几个基本方法
1.isAlive() //判断线程是否还活着 2.getpriority() //获取线程的优先级但不是一定优先 3.setName() //设置线程的名字 4.getName() //获取线程的名字 5.currentThread //获取当前正在运行的线程对象也就是获取自己本身和this.getName()类似但并不是一样
四 线程安全问题 synchronized关键字,代表这个方法加锁,相当于不管哪一个线程(例如线程A),运行到这个方法时, 都要检查有没有其它线程B(或者C、D等)正在用这个方法,若有则要等正在使用synchronized方法的线程B(或者C、D) 运行完这个方法后再运行此线程A,若没有则直接运行。 --------------------- 作者:Mr.冬冬 来源:CSDN 原文:blog.csdn.net/weixin_4230… 版权声明:本文为博主原创文章,转载请附上博文链接!
|
|