1. 程式人生 > 其它 >RobotFramework自動化如何設定瀏覽器的下載路徑

RobotFramework自動化如何設定瀏覽器的下載路徑

建立執行緒的第一種方式

繼承多執行緒

1.自定義執行緒類繼承Thread類

public class TestThread1 extends Thread{
    
}

2.重寫run()方法,編寫執行緒執行體

 public void run() 
{
        //run方法執行緒體
        for (int i = 0; i < 200; i++) {
            System.out.println("我在看程式碼--" + i);
        }
    }

3.建立執行緒物件,呼叫start()方法啟動執行緒

 public static void main(String[] args) {
        //main主執行緒

        //建立一個執行緒物件
        TestThread1 testThread1 = new TestThread1();

        //呼叫start方法開啟執行緒
        testThread1.start();
 }

練習:網圖下載

1.將commons-io-2.11.0.jar放在專案lib目錄下

2.將將commons-io-2.11.0.jar加入到Libraries中

1.點選Project Structure

2.按照圖片依次選擇,最後點選apply

3.編寫程式碼

package MultiThread;

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;
import java.net.URL;

//練習Thread,實現多執行緒同步下載圖片
public class TestThread2 extends Thread{
    private String url;     //網路圖片地址
    private String name;    //儲存的檔名
    public TestThread2(String url, String name){
        this.url = url;
        this.name =name;
    }

    @Override
    public void run() {
        WebDownloader webDownloader = new WebDownloader();
        WebDownloader.downloader(url, name);
        System.out.println("下載了檔名為:" + name);

    }

    public static void main(String[] args) {

        TestThread2 testThread1 = new TestThread2("https://t7.baidu.com/it/u=737555197,308540855&fm=193&f=GIF","1.png");
        TestThread2 testThread2 = new TestThread2("https://t7.baidu.com/it/u=1819248061,230866778&fm=193&f=GIF","2.png");
        TestThread2 testThread3 = new TestThread2("https://t7.baidu.com/it/u=963301259,1982396977&fm=193&f=GIF","3.png");

        //先下載testThread1
        testThread1.start();
        //然後是testThread2
        testThread2.start();
        //最後是testThread3
        testThread3.start();

    }
}

//下載器
class WebDownloader{

    //下載方法
    public static void downloader(String url, String name){
        try {
            FileUtils.copyURLToFile(new URL(url),new File(name));
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("IO異常。downloader方法出現問題");
        }
    }
}

執行緒同步執行沒有按照所給的程式碼順序執行

建立執行緒第二種方式

1.定義MyRunnable實現Runnable介面

public class TestThread3 implements Runnable{

}

2.實現run()方法,編寫執行緒執行體

@Override
public void run() {
    //run方法執行緒體
    for (int i = 0; i < 200; i++) {
        System.out.println("我在看程式碼--" + i);
    }
}

3.建立執行緒物件,呼叫start()方法啟動執行緒

public static void main(String[] args) {
    //main主執行緒

    //建立runnable介面的實現類物件
    TestThread3 testThread3 = new TestThread3();

    //建立執行緒物件,通過執行緒物件來開啟執行緒,代理

    new Thread(testThread3).start();

    for (int i = 0; i < 1000; i++) {
        System.out.println("我在學習多執行緒--" + i);
    }
}

小結

繼承Thread類

1.子類繼承Thread類具備多執行緒的能力

2.啟動執行緒:子類物件.start()

3.不建議使用:避免OOP單繼承侷限性

實現Runnable介面

1.實現介面Runnable具備多執行緒能力

2.啟動執行緒:傳入目標物件+Thread物件.start()

new Thread(testThread3).start();

3.推薦使用:避免單繼承侷限性,靈活方便,方便同一個物件被多個執行緒使用

package MultiThread;

import sun.security.krb5.internal.Ticket;

//多個執行緒同時操作同一個物件
//買火車票的例子

//發現問題:多個執行緒操作同一個資源的情況下,執行緒不安全,資料紊亂。
public class TestThread4 implements Runnable{
    private int ticketNums = 10;
    @Override
    public void run() {
        while (true){
            if(ticketNums<=0){
                break;
            }
            //模擬延時
            try {
                Thread.sleep(200);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(Thread.currentThread().getName() + "拿到了第" + ticketNums-- + "票");
        }
    }

    public static void main(String[] args) {
        TestThread4 ticket = new TestThread4();

        new Thread(ticket,"小明").start();
        new Thread(ticket,"老師").start();
        new Thread(ticket,"黃牛黨").start();
    }
}