【多线程】java 两种创建线程的方法

来源:互联网 发布:手机淘宝怎么代购 编辑:程序博客网 时间:2024/05/18 02:54


一. 两种创建线程的方法

1,继承Thread类,重写其中的run()方法
(1)继承
class A extends Thread{
public void run(){

//线程任务逻辑

}
}

(2)在main()中声明线程
Thread t1 = new A();
t1.start();


注:也可以用内部类的方式直接创建线程

Thread t1 = new Thread(){

public void run (){

//线程任务逻辑

}

};
t1.start();


2.单独定义线程体,实现Runnable接口
(1)定义一个类实现接口

class A implements Runnable{

public void run(){

//线程任务逻辑

}

}

(2)在main()中创建对象

A a1 = new A();
Thread t1 = new Thread(a1);


注:可以用匿名内部类的方式实现Runnable

Thread t1 = new Thread( new Runnable(){

public void run(){
//线程任务逻辑
}

});

t1.start();

 

 

线程同步小结
1、线程同步的目的是为了保护多个线程反问一个资源时对资源的破坏。
2、线程同步方法是通过锁来实现,每个对象都有切仅有一个锁,这个锁与一个特定的对象关联,线程一旦获取了对象锁,其他访问该对象的线程就无法再访问该对象的其他同步方法。
3、对于静态同步方法,锁是针对这个类的,锁对象是该类的Class对象。静态和非静态方法的锁互不干预。一个线程获得锁,当在一个同步方法中访问另外对象上的同步方法时,会获取这两个对象锁。
4、对于同步,要时刻清醒在哪个对象上同步,这是关键。
5、编写线程安全的类,需要时刻注意对多个线程竞争访问资源的逻辑和安全做出正确的判断,对“原子”操作做出分析,并保证原子操作期间别的线程无法访问竞争资源。
6、当多个线程等待一个对象锁时,没有获取到锁的线程将发生阻塞。
7、死锁是线程间相互等待锁锁造成的,在实际中发生的概率非常的小。真让你写个死锁程序,不一定好使,。但是,一旦程序发生死锁,程序将死掉

0 0
原创粉丝点击