Runnable实现多线程

Runnable接口实现多线程

Runnable接口的定义

public interface Runnable{
	public void run();
}

这种函数式接口规定了,只有一个run方法。那么只需要让一个类实现Runnable接口即可,并且也需要覆写run方法。

static class ThreadExecute1 implements Runnable {
/sqlnode1_table.sql
        public void run() {
            // execute sqlnode1
            try (Connection conn = HostMulti.startThreadConn1()) {
                // create ScriptRunner
                ScriptRunner runner = new ScriptRunner(conn);
                runner.setErrorLogWriter(null);
                runner.setLogWriter(null); //output no log
                FileReader read = new FileReader(new File("/server/scipts/sqlnode1_table.sql"));
                runner.runScript(read);
                System.out.println("sql1 execute sucessfully!");
            } catch (Exception e) {
                System.out.println("sql1 execute failed!");
                e.printStackTrace();
            }
        }
    }

与继承Thread相比,MyThread类在结构上没有区别 ,如果想继承Thread类,同时也继承了start 方法,但是如果实现的是Runnable接口,并没有start方法可以调用。

  • 在测试MySQL的生产环境,一般Runnable主要用于多线程测试
    格式如下:
// 创建接口类或继承Runnable
class interface Runnable{
   void run()l;
} 
//或
public  class A implements Runnable{
   public static void run();
} 
// 在主函数创建对象
public static void main(String[] args) 
{
   A test = new A();
   new Thread(test).start();
}

下面是完整的多线程语句:

 public static  void main(String[] args) throws Exception
    {
        Test_three test3 = new Test_three();
        test3.start();
        // multi thread execute create user
        startExecuteUser();
        ThreadExecute1 thread1 = new ThreadExecute1();
        ThreadExecute2 thread2 = new ThreadExecute2();
        ThreadExecute3 thread3 = new ThreadExecute3();
       // multi thread execute sql
        new Thread(thread1).start();
        new Thread(thread2).start();
        new Thread(thread3).start();
        // multi thread execute rename table
        Sqlnode1Rename rename1 = new Sqlnode1Rename();
        Sqlnode2Rename rename2 = new Sqlnode2Rename();
        Sqlnode3Rename rename3 = new Sqlnode3Rename();
        new Thread(rename1).start();
        new Thread(rename2).start();
        new Thread(rename3).start();
        checkRename();

    }
}

参考:
implements和extends的区别

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值