首页 > 学院 > 开发设计 > 正文

Thread线程-创建线程的3种方式

2019-11-06 06:48:46
字体:
来源:转载
供稿:网友

线程:用来同时执行多个任务使用。 线程的运行是并发的。 创建线程的3种方式: 第1种创建线程的方式:定义一个类,并继承Thread,重写run方法。run方法中就可以定义当前线程要执行的任务了。然后调用该线程的start()方法就启动的该线程。 例1: 一个类中可以有多个类。但是public修饰的类只有一个。

package day04;/** * 线程:用来同时执行多个任务使用。 线程的运行是并发的。 * 创建线程有两种方式。 */public class ThreadDemo1 { public static void main(String[] args) { Thread t1 = new MyThread1(); Thread t2 = new MyThread2(); /* * 启动线程不要去直接调用线程的run方法,因为该方法是线程要执行的任务。而我们要调用的是start方法。该方法的作用是将 当前线程纳入到线程调度中,使其具有可以并发执行的能力。 * start方法调用完毕后,线程处于runnable状态。只要它被分配了CPU的时间片,就会开始运行,这时它会自动调用run方法。 */ t1.start(); t2.start(); }}/** * 第一种创建线程的方式:定义一个类,并继承Thread,重写run方法。 run方法中就可以定义当前线程要执行的任务了。 * @author Administrator */class MyThread1 extends Thread{ public void run(){ for(int i=0;i<1000;i++){ System.out.PRintln("你是谁啊?"); } }}class MyThread2 extends Thread{ public void run(){ for(int i=0;i<1000;i++){ System.out.println("我是查水表的!"); } }}

第2种创建线程的方式:自定义一个类实现Runnable接口,重写run方法,并定义线程要执行的任务。创建线程的同时指派任务并启动线程开始工作。

package day04;/** * 第二种创建线程的方式实现Runnable接口,并定义线程要执行的任务。创建线程的同时指派任务并启动线程开始工作。 * * 第一种创建线程的方式的不足: * 1:线程内部的run方法定义了线程要执行的任务。这就导致了线程与线程的任务有一个强耦合关系。不利于线程的重用。 * 2:由于java是单继承的,这就导致我们若需要继承某个父类,同时又需要并发运行,就导致我们无法同时继承两个类。 */public class ThreadDemo2 { public static void main(String[] args) { /* 创建线程要执行的任务 */ Runnable r1 = new MyRunnable1(); Runnable r2 = new MyRunnable2(); /* 创建线程,同时指派任务 */ Thread t1 = new Thread(r1); Thread t2 = new Thread(r2); t1.start(); t2.start(); }}/** * 定义该类并实现Runnbale接口,用来指定线程要完成的任务 * @author Administrator */class MyRunnable1 implements Runnable{ public void run() { for(int i=0;i<1000;i++){ System.out.println("你是谁啊?"); } }}class MyRunnable2 implements Runnable{ public void run() { for(int i=0;i<1000;i++){ System.out.println("我是查水表的!"); } }}

第3种创建线程的方式,使用匿名内部类方式:

package day04;/** * 使用匿名内部类的形式创建线程 */public class ThreadDemo3 { public static void main(String[] args) { /* * 第一种创建线程的形式 */ Thread t1 = new Thread(){ public void run(){ for(int i=0;i<1000;i++){System.out.println("你是谁啊?");} } }; /* * 第二种创建线程的方式 */ Runnable runn = new Runnable(){ public void run(){ for(int i=0;i<1000;i++){System.out.println("我是查水表的!");} } }; Thread t2 = new Thread(runn); t1.start(); t2.start(); }}

例4:使用Runnable创建线程的方式实现JFrame对话框背景颜色切换实例:

package day04;import java.awt.Color;import javax.swing.JFrame;import javax.swing.JPanel;/** * 测试Runnable * @author Administrator * */public class TestRunnable extends JFrame implements Runnable{ @Override public void run() { int i=0 ; JPanel panel=new JPanel(); panel.setSize(300, 300); this.setContentPane(panel); while(true){ i= i==0?1:0; if(i==0){ panel.setBackground(Color.BLACK); }else{ panel.setBackground(Color.WHITE); } } } public static void main(String[] args) { TestRunnable r=new TestRunnable(); r.setSize(300,300); r.setVisible(true); r.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE); Thread t=new Thread(r); t.start(); }}

运行效果:

![这里写图片描述](http://img.blog.csdn.net/20170306184357314?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzE0NTE0NzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表