RobotFramework自動化如何設定瀏覽器的下載路徑
阿新 • • 發佈:2022-05-16
建立執行緒的第一種方式
繼承多執行緒
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();
}
}