新聞中心
java中兩個線程同時運行,如何在一個線程拋出異常時將兩個線程同時中斷或結(jié)束,而不運行之后的代碼塊
沒有太理想的方法? 比較笨的辦法是自己重新封裝一次線程類?如下邊的方法就是在run方法的最后一行修改一次狀態(tài),如果執(zhí)行到最后那狀態(tài)就會修改,如果出現(xiàn)異常執(zhí)行不到最后狀態(tài)就不修改
成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供廣靈企業(yè)網(wǎng)站建設,專注與網(wǎng)站制作、成都網(wǎng)站建設、HTML5、小程序制作等業(yè)務。10年已為廣靈眾多企業(yè)、政府機構(gòu)等服務。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設公司優(yōu)惠進行中。
public class Dfdsfasdfasdfa {
public static void main(String[] args){
MyTask t1 = new MyTask("1");
MyTask t2 = new MyTask("s");
t1.start();
t2.start();
try{
t1.join();
t2.join();
if(t1.getIsEnd()t2.getIsEnd()){
System.out.println("zzzz");
}
}catch(InterruptedException e) {
}
}
}
class MyTask extends Thread {
private String s=null;
private boolean isEnd=false;
public MyTask(String s){
this.s=s;
}
public void run() {
System.out.println(Integer.parseInt(s));
System.out.println(s);
isEnd=true;
}
public boolean getIsEnd(){
return isEnd;
}
}
java 兩個線程執(zhí)行不同的方法
首先你這說法似乎有點錯誤,不知道你是否把C#里面的線程用法用到java上面了。
首先,java里面的線程,只是執(zhí)行一個方法,那個方法名為 public void run(){}
再次,在java里面,使用線程是要繼承Thread類(重寫run方法),或者是實現(xiàn)Runnable接口(實現(xiàn)run方法)
然后,建立一個線程,是
1、繼承線程Thread類: MyThread thread=new MyThread();
啟動:thread.start();這樣就啟動一個線程,但它只是執(zhí)行run方法里面的東西
2、實現(xiàn)Runnable接口的:MyRunnableThread thread=new MyRunnableThread();
啟動: Thread runThread=new Thread(thread); runThread.start();(或者直接寫為:new Thread(thread).start() )
最后,在這里你應該可以看到了,這是一個類線程,不是一個方法線程。如果你要執(zhí)行多個方法,就要多寫和創(chuàng)建啟動多個線程類
java多線程共同操作同一個隊列,怎么實現(xiàn)?
具體代碼如下:
以下是兩個線程:
import java.util.*;
public class Thread_List_Operation {
//假設有這么一個隊列
static List list = new LinkedList();
public static void main(String[] args) {
Thread t;
t = new Thread(new T1());
t.start();
t = new Thread(new T2());
t.start();
}
}
//線程T1,用來給list添加新元素
class T1 implements Runnable{
void getElemt(Object o){
Thread_List_Operation.list.add(o);
System.out.println(Thread.currentThread().getName() + "為隊列添加了一個元素");
}
@Override
public void run() {
for (int i = 0; i 10; i++) {
getElemt(new Integer(1));
}
}
}
//線程T2,用來給list添加新元素
class T2 implements Runnable{
void getElemt(Object o){
Thread_List_Operation.list.add(o);
System.out.println(Thread.currentThread().getName() + "為隊列添加了一個元素");
}
@Override
public void run() {
for (int i = 0; i 10; i++) {
getElemt(new Integer(1));
}
}
}
//結(jié)果(亂序)
Thread-0為隊列添加了一個元素
Thread-1為隊列添加了一個元素
Thread-0為隊列添加了一個元素
Thread-1為隊列添加了一個元素
Thread-1為隊列添加了一個元素
Thread-1為隊列添加了一個元素
Thread-1為隊列添加了一個元素
Thread-1為隊列添加了一個元素
Thread-1為隊列添加了一個元素
Thread-1為隊列添加了一個元素
Thread-1為隊列添加了一個元素
Thread-1為隊列添加了一個元素
Thread-0為隊列添加了一個元素
Thread-0為隊列添加了一個元素
Thread-0為隊列添加了一個元素
Thread-0為隊列添加了一個元素
Thread-0為隊列添加了一個元素
Thread-0為隊列添加了一個元素
Thread-0為隊列添加了一個元素
Thread-0為隊列添加了一個元素
網(wǎng)站標題:java兩個線程運行代碼 java兩個線程交替輸出
轉(zhuǎn)載注明:http://fisionsoft.com.cn/article/doiscgi.html