Kev*_*vin 12 java multithreading
今天我在接受采访时谈到了Java中的Thread概念?问题是......
除了Thread的定义之外,我没有回答任何问题,我也是从互联网上学到的.
任何人都可以清楚地向我解释这个.
更新:
线程和普通java类之间有什么区别.为什么我们需要线程...我可以在线程中执行业务逻辑.我可以在Threads中调用不同的类方法.
Saj*_*ani 12
要创建线程,请创建一个扩展Thread类的新类,并实例化该类.扩展类必须覆盖run()方法并调用start()方法以开始执行线程.
在run()中,您将定义构成新线程的代码.重要的是要理解run()可以调用其他方法,使用其他类并像主线程一样声明变量.唯一的区别是run()为程序中另一个并发执行线程建立入口点.这将在run()返回时结束.
public class MyThread extends Thread {
private final String name;
public MyThread(String name) {
this.name = name;
}
public void run() {
try {
for (; ; ) {
System.out.println(name);
Thread.sleep(1000);
}
} catch (InterruptedException e) {
System.out.println("sleep interrupted");
}
}
public static void main(String[] args) {
Thread t1 = new MyThread("First Thread");
Thread t2 = new MyThread("Second Thread");
t1.start();
t2.start();
}
}
Run Code Online (Sandbox Code Playgroud)
输出屏幕:
First Thread
Second Thread
First Thread
Second Thread
First Thread
Run Code Online (Sandbox Code Playgroud)
并看到这个:
http://www.javaworld.com/javaworld/jw-04-1996/jw-04-threads.html
对于Spring,您可以使用线程池:
http://static.springsource.org/spring/docs/2.0.x/reference/scheduling.html
多线程是一种Java功能,允许并发执行程序的两个或多个部分,以最大限度地利用CPU.这种程序的每个部分都称为线程.所以,
线程是进程中的轻量级进程.
可以使用两种机制创建线程:
通过扩展Thread类创建线程
我们创建了一个扩展java.lang.Thread类的类.该类重写该类中run()可用的方法Thread.线程在run()方法内部开始.我们创建一个新类的对象,并调用start()方法来开始执行一个线程.Start()调用对象run()上的方法Thread.
class MultithreadingDemo extends Thread{
public void run() {
try { // Displaying the thread that is running
System.out.println ("Thread " + Thread.currentThread().getId()
+ " is running");
}
catch (Exception e){ // Throwing an exception
System.out.println ("Exception is caught");
}
}
}
public class Multithread{
public static void main(String[] args) {
int n = 8; // Number of threads
for (int i=0; i<8; i++) {
MultithreadingDemo object = new MultithreadingDemo();
object.start();
}
}
}
Run Code Online (Sandbox Code Playgroud)
通过实现Runnable接口创建线程
我们创建了一个实现java.lang.Runnable接口和覆盖run()方法的新类.然后我们start()在这个对象上实例化一个Thread对象并调用方法.
class MultithreadingDemo implements Runnable{
public void run() {
try { // Displaying the thread that is running
System.out.println ("Thread " + Thread.currentThread().getId() +
" is running");
}
catch (Exception e) { // Throwing an exception
System.out.println ("Exception is caught");
}
}
}
class Multithread{
public static void main(String[] args) {
int n = 8; // Number of threads
for (int i=0; i<8; i++) {
Thread object = new Thread(new MultithreadingDemo());
object.start();
}
}
}
Run Code Online (Sandbox Code Playgroud)
线程类与可运行接口
如果我们扩展Thread类,我们的类不能扩展任何其他类,因为Java不支持多重继承.但是,如果我们实现Runnable接口,我们的类仍然可以扩展其他基类.
我们可以通过扩展Thread类来实现线程的基本功能,因为它提供了一些内置的方法,如yield(),interrupt()等在Runnable接口中不可用.
| 归档时间: |
|
| 查看次数: |
24300 次 |
| 最近记录: |