java 多線程_如何順序執行多個線程

可以,兩個線程運行的時候讓其他的等待(wait),結束的時候喚醒下兩個就行了。

② 在java中同時起多個線程,然後怎麼讓多個線程進入等待狀態

class MyThread extends Thread {
static Object lock = new Object();
public void run() {
// TODO Auto-generated method stub

}
public void toWait() {
synchronized(lock){
try {
lock.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void toNotifyAll(){
synchronized(lock){
lock.notifyAll();
}
}
}
//讓線程對象在run方法中調用toWait使其等待,調用靜態方法toNotifyAll喚醒所有線程

③ java 兩個線程執行不同的方法

1、首先你要創建兩個線程,比如你的線程類是temp1,temp2,new ThreadMy(),
2、你自己的線程類裡面要必須重載run();還可以聲明其它方法,
3、temp1.start();/啟動你的線程,

④ java多線程如何創建多個多線程

Java 多線程的同步依靠的是對象鎖機制,這個問題需要我們不斷的學習相關的問題。下面我們就來詳細的學習下如何才能更好的進行具體內容的使用。synchronized關鍵字的背後就是利用了封鎖來實現對共享資源的互斥訪問。
下面以一個簡單的實例來進行對比分析。實例要完成的工作非常簡單,就是創建10個線程,每個線程都列印從0到99這100個數字,我們希望線程之間不會出現交叉亂序列印,而是順序地列印。
先來看第一段代碼,這里我們在run()方法中加入了synchronized關鍵字,希望能對run方法進行互斥訪問,但結果並不如我們希望那樣,這是因為這里synchronized鎖住的是this對象,即當前運行線程對象本身。 Java 多線程代碼中創建了10個線程,而每個線程都持有this對象的對象鎖,這不能實現線程的同步。
Java多線程代碼如下
1.package com.vista;
2.class MyThread implements java.lang.Runnable
3.{
4.private int threadId;
5.public MyThread(int id)
6.{
7.this.threadId = id;
8.}
9.@Override
10.public synchronized void run()
11.{
12.for (int i = 0; i < 100; ++i)
13.{
14.System.out.println("Thread ID: " + this.threadId + " : " + i);
15.}
16.}
17.}
18.public class ThreadDemo
19.{
20./**
21.* @param args
22.* @throws InterruptedException
23.*/
24.public static void main(String[] args) throws InterruptedException
25.{
26.for (int i = 0; i < 10; ++i)
27.{
28.new Thread(new MyThread(i)).start();
29.Thread.sleep(1);
30.}
31.}
32.}
以上就是對Java多線程的詳細代碼介紹。

⑤ java如何通過參數創建多個線程

for+new Thread

⑥ java 多個方法實現多線程

GUI中多線調用方法應該使用:SwingUtilities.invokeLater和invokeAndWait而不是普通情況下那樣應用.

至於機器人控制內函數,你可以讓程序在線程容中調用即可。沒必要實現Runnable介面。

SwingUtilities你可以在網路中搜索它的用法。下面是一個簡單的示例:

RunnabledoWorkRunnable=newRunnable(){
publicvoidrun(){doWork();}
};
SwingUtilities.invokeLater(doWorkRunnable);


你必須把要運行的代碼放到一個Runnable對象的run()方法中,並將此Runnable對象設為invokeLater()的參數。invokeLater()方法會立即返回,不等待事件派發線程執行指定代碼。

而不能像下面這樣來用。因為會出現各種奇怪的問題。
Threadthread=newThread(doWorkRunnable);
thread.start();

⑦ java多個線程執行的順序是按順序執行的嗎

這個要分段來實現, 第一步是讓線程同步,第二部是讓線程有順序。
同步:我們可以用synchronized來解決。
Java線程同步原理: java會為每個object對象分配一個monitor,當某個對象的同步方法(synchronized methods )被多個線程調用時,該對象的monitor將負責處理這些訪問的並發獨占要求。
當一個線程調用一個對象的同步方法時,JVM會檢查該對象的monitor。如果monitor沒有被佔用,那麼這個線程就得到了monitor的佔有權,可以繼續執行該對象的同步方法;如果monitor被其他線程所佔用,那麼該線程將被掛起,直到monitor被釋放。
當線程退出同步方法調用時,該線程會釋放monitor,這將允許其他等待的線程獲得monitor以使對同步方法的調用執行下去。就像下面這樣:
public void test() {
synchronized (this) {
//做一些事
//這里只會有一個線程來調用該方法,因為只有一個this對象作為資源分配給該線程
}

}

順序:我們可以用List來解決,因為它是有序的。我們只需要將要執行的線程放入到List中

上代碼:
/**
* 讓多個線程同步順序執行的線程管理器
* @author bianrx
* @date 2012.1.18
* SynchronizedRunMultiThread
*/
public class SyncManager {
/**
* 待執行的線程集合,注意這里必須是Runnable介面類型,下面會解釋
*/
private List<Runnable> runnableList;

public SyncManager(){}

public SyncManager(List<Runnable> runnableList) {
this.runnableList = runnableList;
}

public void setRunnable(List<Runnable> runnableList) {
this.runnableList = runnableList;
}
public void run() {
//遍歷代執行的線程集合
for(Runnable runnable: runnableList) {
runThread(runnable);
}
}

/**
* 按順序同步執行多個線程
* @author bianrx
* @date 2012.1.18
* @param runnable
*/
private void runThread(Runnable runnable) {
synchronized (this) {
runnable.run();//這里需要注意的是:必須調用run方法,因為如果你調用了start方法,線程只會向JVM請求資源,但是未必就執行其中的run。
//這個方法是同步的,所以當前只有一個線程佔用了this對象。
}
}
}

⑧ java中多個線程訪問一個方法,只有一個線程能夠訪問這個方法,而其他線程會被關閉,怎麼做

1)可以在該方法上加一個同步鎖,讓其變為同步方法,這樣每次就只有一個線程可以訪問,而其他的線程只有等到他訪問完之後才有機會訪問。
2)可以在方法中設置參數count,訪問時累加,然後判斷。
一定要關閉的話,首先要判斷是那一個線程訪問了方法,之後將其他的關閉就可以了。

⑨ JAVA中如何利用多線程同時運行多個方法

首先,這個同時,只是在宏觀上的,多線程環境,線程與線程之間,還是串回行運行的。
要「同時」運答行多個方法,那麼,就需要創建多個線程,然後,在線程的run()方法里,寫上你想要實現的邏輯。需如果創建多線程,這又是另一個問題(通過繼承Thread跟實現Runnable來實現)。

⑩ 在java中,多線程真的是多個線程同時運行嗎

一個處理器(cpu)在某一個時間點上永遠都只能是一個線程!雙核cpu你可以理解為兩塊cpu,4核、8核等以此類推,就單個cpu而言某個時間點只能是一個線程在運行, 所謂的多線程是通過調度獲取cpu的時間片實現的 其實就相當於 cpu是一個人 多線程是幾件事 cpu一下子干這件事 干一會兒時間片到了就干另一件 由於cpu計算速度很快很快 所以看起來就像幾件事情在同時做著 不過現在cpu都是雙核四核八核的 這些是真的一起乾的 因為這是幾個人干幾件事 肯定是一起做的啦
不曉得這樣比喻你可以理解不 這樣不能理解我也么有辦法啦