
正文
创建线程代码java 创建线程方法java
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
java怎么创建一个线程
Java线程类也是一个object类,它的实例都继承自java.lang.Thread或其子类。 可以用如下方式用java中创建一个线程:
Tread thread = new Thread();
执行该线程可以调用该线程的start()方法:
thread.start();
编写线程运行时执行的代码有两种方式:一种是创建Thread子类的一个实例并重写run方法,第二种是创建类的时候实现Runnable接口。接下来我们会具体讲解这两种方法:
创建Thread的子类
创建Thread子类的一个实例并重写run方法,run方法会在调用start()方法之后被执行。例子如下:
public class MyThread extends Thread {
public void run(){
System.out.println("MyThread running");
}
}
可以用如下方式创建并运行上述Thread子类
MyThread myThread = new MyThread();
myTread.start();
一旦线程启动后start方法就会立即返回,而不会等待到run方法执行完毕才返回。就好像run方法是在另外一个cpu上执行一样。当run方法执行后,将会打印出字符串MyThread running。
实现Runnable接口
第二种编写线程执行代码的方式是新建一个实现了java.lang.Runnable接口的类的实例,实例中的方法可以被线程调用。下面给出例子:
public class MyRunnable implements Runnable {
public void run(){
System.out.println("MyRunnable running");
}
}
为了使线程能够执行run()方法,需要在Thread类的构造函数中传入 MyRunnable的实例对象。示例如下:
Thread thread = new Thread(new MyRunnable());
thread.start();
当线程运行时,它将会调用实现了Runnable接口的run方法。上例中将会打印出”MyRunnable running”。
相关问答
Q1: java 如何创建一个有返回值的线程
可以通过实现Callable接口创建一个有返回值的线程,代码如下:
import java.util.concurrent.*;
public class MyThread implements CallableInteger {
private int count;
public MyThread(int count) {
this.count = count;
}
@Override
public Integer call() throws Exception {
// 此处是线程要处理的业务代码,此处实现的是对count变量加1的操作
count += 1;
Thread.sleep(1000);
return count;
}
public static void main(String[] args) {
// 创建线程实例
MyThread myThread = new MyThread(1);
// 创建一个大小为10的线程池
ExecutorService executor = Executors.newFixedThreadPool(10);
// 将线程提交到线程池执行
FutureInteger future = executor.submit(myThread);
try {
// 调用get方法获取线程执行结果,在线程执行完成前该方法会一直阻塞
Integer result = future.get();
System.out.println(result);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
// try {
// // 这种写法可以设置线程执行的超时时间,当线程超过指定的时间还未执行完成时会抛出TimeoutException异常
// // 示例中表示线程超过1000毫秒还没执行完就会抛出超时异常
// Integer result = future.get(1000, TimeUnit.MILLISECONDS);
// System.out.println(result);
// } catch (InterruptedException e) {
// e.printStackTrace();
// } catch (ExecutionException e) {
// e.printStackTrace();
// } catch (TimeoutException e) {
// e.printStackTrace();
// }
}
}
Q2: Java并发编程:如何创建线程,进程
在java中如果要创建线程的话,一般有两种方式:1)继承Thread类;2)实现Runnable接口。
1.继承Thread类
继承Thread类的话,必须重写run方法,在run方法中定义需要执行的任务。
123456789101112
class MyThread extends Thread{ private static int num = 0; public MyThread(){ num++; } @Override public void run() { System.out.println("主动创建的第"+num+"个线程"); }}
创建好了自己的线程类之后,就可以创建线程对象了,然后通过start()方法去启动线程。注意,不是调用run()方法启动线程,run方法中只是定义需要执行的任务,如果调用run方法,即相当于在主线程中执行run方法,跟普通的方法调用没有任何区别,此时并不会创建一个新的线程来执行定义的任务。
1234567891011121314151617181920
public class Test { public static void main(String[] args) { MyThread thread = new MyThread(); thread.start(); }} class MyThread extends Thread{ private static int num = 0; public MyThread(){ num++; } @Override public void run() { System.out.println("主动创建的第"+num+"个线程"); }}
在上面代码中,通过调用start()方法,就会创建一个新的线程了。为了分清start()方法调用和run()方法调用的区别,请看下面一个例子:
1234567891011121314151617181920212223
public class Test { public static void main(String[] args) { System.out.println("主线程ID:"+Thread.currentThread().getId()); MyThread thread1 = new MyThread("thread1"); thread1.start(); MyThread thread2 = new MyThread("thread2"); thread2.run(); }} class MyThread extends Thread{ private String name; public MyThread(String name){ this.name = name; } @Override public void run() { System.out.println("name:"+name+" 子线程ID:"+Thread.currentThread().getId()); }
Q3: java创建线程的方法
方式1创建线程代码java:继承Java.lang.Thread类创建线程代码java,并覆盖run()方法。优势:编写简单;劣势:单继承创建线程代码java的限制----无法继承其它父类,同时不能实现资源共享。方式2:实现Java.lang.Runnable接口,并实现run()方法。优势:可继承其它类,多线程可共享同一个Thread对象;劣势:编程方式稍微复杂,如需访问当前线程,需调用Thread.currentThread()方法。
Q4: 如何创建线程?如何保证线程安全?
创建线程的方式一创建线程代码java:继承Thread类(由于Java单继承的特性,这种方式用的比较少)
步骤:
1、继承Thread类,然后重写run方法
请点击输入图片描述
2、创建子类对象,然后调用start()方法来启动线程
请点击输入图片描述
我们可以看到这边现在只创建了一个线程,那么如果要创建多个线程要怎么做呢创建线程代码java?通过继承Thread的方式创建线程,想要创建多个不同的线程就要先创建多个不同的继承Thread的类,然后再根据上面的步骤1,2来创建线程,这显然有些麻烦,为了展示多线程,我们先在上面的线程中增加一个主线程,也就是main方法中执行的线程。如下:
请点击输入图片描述
创建线程的方式二:实现Runnable接口(Java可以实现多个接口,这种方式常用)
步骤:
1、创建一个类实现Runnable接口,然后重写run方法
请点击输入图片描述
2、创建实现类对象、代理类对象,然后代理类对象调用start()方法启动线程
用实现Runnable接口的方式,实现多线程:
《模拟抢票系统》,代码如下:
线程调用了start()方法,并不意味着立即执行,而是到就绪状态,等待cpu的调度,所以每次执行的结果都是不一样的。
创建线程的方式三:实现java.util.concurrent并发包下的Callable接口(进阶版,初学者做个了解)
步骤:
1、创建一个类实现Callable接口,然后重写call()方法
(和run方法不一样的是,call方法可以有返回值,并且可以抛出异常)
2、创建Callable的实现类对象--》创建执行服务--》提交执行服务得到Future对象--》获取结果--》停止服务
Q5: java创建线程的方式有几种?
java创建线程创建线程代码java的方式有三种\x0d\x0a第一种是继承Thread类 实现方法run() 不可以抛异常 无返回值\x0d\x0a第二种是实现Runnable接口 实现方法run() 不可以抛异常 无返回值\x0d\x0a第三种是实现Callable接口,接口中要覆盖创建线程代码java的方法是 public call() 注意:此方法可以抛异常,而前两种不能 而且此方法可以有返回值\x0d\x0a\x0d\x0a第三种如何运行呢 Callable接口在util.concurrent包中,由线程池提交\x0d\x0aimport java.util.concurrent.*;\x0d\x0aExecutorService e = Executors.newFixedThreadPool(10); 参数表示最多可以运行几个线程\x0d\x0ae.submit(); 这个里面参数传 实现Callable接口那个类创建线程代码java的对象
关于创建线程代码java和创建线程方法java的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






