黑马程序员技术交流社区
标题:
多线程有几种实现方法?同步有几种实现方法?
[打印本页]
作者:
张强+
时间:
2011-11-9 15:58
标题:
多线程有几种实现方法?同步有几种实现方法?
多线程有几种实现方法?同步有几种实现方法?
作者:
海林
时间:
2011-11-9 16:11
1 继承Thread,复写run方法。
2 实现Runnable接口,复写run方法,然后将对象传递到Thread中。
3 通过线程并发库(我知道有这样的实现方式,但具体的原理不太清楚)。
同步方式:
1 使用同步代码块。
2 使用同步方法。
作者:
宿万涛
时间:
2011-11-9 16:22
线程有两种启动方式1.定义实现java.lang.RunnableJ接口的类,定义好这个类之后,需要把它的实例作为参数传入Thread的构造方法中来创建出一个新线程。Thread thread = new Thread(new MyRunnable); 2.将类定义为Thread类的子类并重写run()方法。 Thread thread = new MyThread();
实现同步的方法1.synchronized放在方法声明中,表示整个方法为同步方法。如:public synchronized boolean sell(){...}
2.利用对象锁也可以实现同步 ->创建Lock实例private Lock lock = new ReentrantLock(); ->获取锁 lock.lock(); ->释放锁 lock.unlock();
具体的用法可参见张老师编写的 《Java基础与案例开发详解》->多线程部分
作者:
石宗银
时间:
2011-11-9 16:27
推荐看下毕老师的线程视频,或张老师的基础视频里的多线程,,这些讲的是jdk5以前的
然后看下 张老师的 java5的线程 并发库,,
作者:
郝亚平
时间:
2011-11-9 17:18
关于线程的编写:
Java工程师为方便多线程开发,给我们提供了一个内部本身实现Runnable接口的类:Thread类。我们直接继承这个Thread类,然后把我们需要多线程并发执行的代码重写在这个Thread类的run方法里面,然后再依次调用这个Thread子类的构造器来创建线程,线程启动方法start()启动线程到运行状态,就可以了。。
这个是Java中多线程的第一种编写方式,但是在现实当中,用的比较少。主要原因在于这种方式有局限性。你一旦使用了这种方式去实现多线程,那么,就意味着你的程序是单继承的,你才可以这么做。比如你要定义一个学生类class Student让它继承Thread,并把要执行的多线程代码放在了子类重写Thread类的run方法里面。这样建立了一个线程以后,你的这个程序,如果以后或者现在想要扩展继承性,就不具备能力了。比如,你已经将学生类class Student继承自Thread实现了一个线程执行路径,某一天,你突然想从学生类class Student里面提炼出来一个class Person,你想再去继承它,要实现这种关系,那就是不可能的了,因为你使用了继承方式实现的线程编写,而且Java是仅仅支持单继承的。
Sun公司的天才们在开发Java时候,就发现了一个这样子的问题。于是,他们就提供了第二种线程编写的方式:实现Runnable接口方式。
这种方式,好处就在于弥补了上面第一种线程创建方式的缺点,实现Runnable接口,重写接口run方法允许你执行自己的线程代码,
同时实现Runnable接口的类允许你继承另外一个类,弥补了继承Thread方式中java单继承特性引发的缺点。
其内部实现机制就是:利用多态特性,定义Thread类时,为Thread类的构造函数重载了一个方法,这个方法接受一个Runable target参数。
这个地方,可以传入任何实现了Runnable接口的子类对象。而这个Runnable子类是不影响继承性的。
总结一下,Java中线程编写方式就是两种:
1.继承Thread方式。(简单点,就是继承方式)
2.实现Runnable接口方式(简单点,就是实现方式)
作者:
咖啡
时间:
2011-11-9 18:51
从线程有两种方法,一种是继承Thread,另一种是实现Runnable接口.同步方式也有两种,使用同步代码块和同步方法。
作者:
wangqing
时间:
2011-11-10 13:31
多线程有两种实现方法:
1、通过继承Thread类实现
2、通过实现Runnable接口来实现
同步也有两种方式实现
1、通过同步代码块
synchronized(对象)
{
需要被同步的代码
}
2、通过同步方法
public synchronized void add()
{
需要被同步的代码
}
但是同步的前提:
1、必须要有两个或者两个以上的线程
2、必须是多个线程使用同一个锁
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2